verilog中有符号数和无符号数的相关运算
目录
1.有符号数和有符号数的加减运算(输入和输出为原码)
2.无符号数和有符号数的加减运算(输入和输出为原码)
3.有符号数和有符号数的乘法(输入和输出为原码)
1.有符号数和有符号数的加减运算(输入和输出为原码)
step1:将数据转换为补码。
step2:确定输出结果的位宽。
(结果的位宽是在最大的一个数据的位宽基础上加一位。如6bit与3bit进行加减,则结果为7bit。)
step3:扩展符号位到输出结果的位宽,然后直接进行运算。
step4:处理输出结果。(因为得到的结果是补码,需要转化为原码后再输出。转换方法:判断符号位,如果符号位为0,表明是一个正数,则直接输出(正数原码和补码相等)。如果符号位是1,表明是一个负数,需要符号位不变,有效位取反加一后再输出(补码变原码)。)
例1:(-3) -(-6)
分析:-3用有符号数表示,原码为3bit的111。-6用有符号数表示,原码为4bit的1110。
step1:将每一个数都转换成补码。-3的补码为101,-6的补码为1010
step2:确定输出结果的位宽。最大的一个数据的位宽是4bit,则输出结果的位宽为5bit的有符号数。
step3:扩展符号位到输出结果的位宽,然后直接进行运算。
输出结果out=1_1101-1_1010=0_0011(注意结果要取5bit)
step4:符号位out[5] = 0,表明为正数数,则直接输出,out=0_0011(+3)
例2:(-3) - (+6)
分析:-3用有符号数表示,原码为3bit的111。+6用有符号数表示,原码为4bit的0110。
step1:转换成补码。-3的补码为101,+6的补码为0110。(正数的补码与原码相同)
step2:确定输出结果的位宽。最大的一个数据的位宽是4bit,则输出结果的位宽为5bit的有符号数。
step3:扩展符号位到输出结果的位宽,然后直接进行运算。
输出结果out=1_1101-0_0110=1_0111(注意结果要取5bit)
step4:符号位out[5] = 1,表明为负数,则符号位不变,有效为取反加一后输出,out=1_1001(-9)
2.无符号数和有符号数的加减运算(输入和输出为原码)
step1:将无符号数转换为有符号数。
step2:将数据转换为补码。
step3:确定输出结果的位宽。
(结果的位宽是在最大的一个数据的位宽基础上加一位。如6bit与3bit进行加减,则结果为7bit。)
step4:扩展符号位到输出结果的位宽,然后直接进行运算。
step5:处理输出结果。(因为得到的结果是补码,需要转化为原码后再输出。转换方法:判断符号位,如果符号位为0,表明是一个正数,则直接输出(正数原码和补码相等)。如果符号位是1,表明是一个负数,需要符号位不变,有效位取反加一后再输出(补码变原码)。)
例3: (3) + (-6)
分析:3用无符号数表示,原码为2bit的11。-6用有符号数表示,原码为4bit的1110。
step1:将无符号数转换为有符号数。2bit的无符号数11,为有符号数3bit的011
step2:转换成补码。3的补码为011,-6的补码为1010。(正数的补码与原码相同)
step3:确定输出结果的位宽。最大的一个数据的位宽是4bit,则输出结果的位宽为5bit的有符号数。
sep4:扩展符号位到输出结果的位宽,然后直接进行运算。
输出结果out=0_0011+1_1010=1_1101(注意结果要取5bit)
step5:符号位out[5] = 1,表明为负数,则符号位不变,有效为取反加一后输出,out=1_0011(-3)
总结:无符号数和有符号数的计算可转变为有符号数和有符号数的计算。
3.有符号数和有符号数的乘法(输入和输出为原码)
step1:确定输出结果位宽。(一个符号位+两个数据有效为的位宽之和,如1个4bit的有符号数A,和1个5bit的有符号数B相乘,A的有效位是3bit,B的有效位为4bit,则输出结果的有效位宽为7bit,总位宽为8bit)。
step2:计算输出结果的符号位。(两个数据的符号位进行异或,判断是正数还是负数)。
step3:计算输出结果的有效位。(直接将两个数据相乘,得到的结果就是输出结果的有效位)。
step4:将符号位和有效位拼接后输出。
例4:(-3)*(-6)
分析:-3用有符号数表示,原码为3bit的111。-6用有符号数表示,原码为4bit的1110。
step1:确定输出结果位宽。(-3的有效位是2bit,-6的有效位为3bit,则输出结果的有效位宽为5bit,总位宽为6bit)。
step2:计算输出结果的符号位。两个数据的符号位都是1,则1^1=0,则输出结果是正数。
step3:计算输出结果的有效位。2'b11 * 3'b110 = 5'b1_0010。
step4:将符号位和有效位拼接后输出。out=6'b01_0010(+18)
ps:如果输入是补码,则运算之前先转换为原码,在按照以上步骤即可。
verilog中有符号数和无符号数的相关运算相关推荐
- 对verilog中有符号数和无符号数的理解
文章目录 对verilog中有符号数和无符号数的理解 对verilog中有符号数和无符号数的理解 verilog中使用signed表示有符号数,比如: wire signed [7:0] din; ...
- java中有符号数和无符号数,C语言中无符号数和有符号数之间的运算
C语言中有符号数和无符号数进行运算(包括逻辑运算和算术运算)默认会将有符号数看成无符号数进行运算,其中算术运算默认返回无符号数,逻辑运算当然是返回0或1了. unsigned int和int进行运算 ...
- C语言中有符号数和无符号数的问题
C语言中有符号数和无符号数的问题 项目说明 考虑下列代码, 这段代码试图计算数组a中所有元素的和, 其中元素的数量由参数length给出: /* WARNING: This is buggy ...
- Verilog有符号数与无符号数的相互转化
Verilog有符号数与无符号数的相互转化 最近在使用DA转换时碰到一个问题,DA芯片输入的数值必须是正的,但输出的数据为有符号数,涉及到一个转化的问题,写一篇博客总结一下. 问题描述 一.正数 二. ...
- 关于汇编中有符号数和无符号数的判断
首先给一段代码 1 #include <stdio.h> 2 int main() 3 {unsigned int x=9; 4 int y=-20; 5 int m=(x+y> ...
- Quartus中有符号数和无符号数比较大小
有符号数和无符号数比较大小,有符号数会被当做无符号数. 代码如下.我把波形信号data和dac输出进行比较,比较结果如图.可以看到当data为正时,比较结果是对的:当data为负时,被当做正的 ...
- Verilog 有符号数与无符号数运算
无符号数运算,左值位宽不够,发生截断的现象 reg [3:0] a = 4'b1111;//15 reg [3:0] b = 4'b0010;//2 wire [3:0] c; wire [3:0] ...
- c语言 有符号数与0作比较大小,C语言中有符号数与无符号数能否进行比较运算...
无符号数和有符号数是不能进行比较运算的,否则可能会出现意想不到的错误,且极难检查出来! 首先肯几个例子(假设在32位的机器上): 1 1. 0 == 0U 2 2. - ...
- verilog有符号数和无符号数的计算
有符号和无符号数 在电路设计中肯定会使用到有符号数无符号数的运算,今天简单说说具体怎么使用有符号数无符号数进行运算,这里以减法为例. 我们知道计算机运算都是以二进制的形式进行的,不过遇到负数,通常用二 ...
最新文章
- c语言计算日出日落时间_计算日出日落算法实现
- PHOTOSHOP 快捷键
- java如何將數組反轉_Java基礎練習題 (4)數組操作
- 从玉谋定农业大健康-国情讲坛·林裕豪 :粤港澳大湾区菜篮子
- 详解自然语言处理5大语义分析技术及14类应用(建议收藏)
- socket编程五种模型
- 搭建用友开发环境(基于碧桂园的nchome)
- python数据处理可以做什么菜_厌倦了EXCEL想玩点新花样?教你利用Python做数据筛选(下)...
- Mysql 全局锁入门
- 格式化Mac硬盘---DoYourData Super Eraser安全、快速
- java中通过正则表达式提取数字
- IBatisNet初步体验
- java word转pdf 在linux转pdf乱码解决方法
- 姓名计算机编码,姓名代码
- c语言求信源的信息熵,[转载]关于信息熵及信源熵率
- 金山文字 职称计算机,计算机职称考试金山文字2005考试大纲
- 平均指标指数与平均数指数的区别
- FastDFS文件服务器升级内置nginx版本
- Qt 之 自定义窗口标题栏
- bzoj 3772 :精神污染 线段树+打标记 or 主席树
热门文章
- 国产文档控件Spire.Doc for.NET ,增强从 Word 到 PDF 和 HTML 的转换
- MySQL时间类分区写SQL的一些注意事项
- 登陆验证发展史(cookie认证->session认证->token认证->JWT,单系统登陆->多系统单点登陆)
- 【数据结构】线性表4——顺序表和链表的比较
- 忍者必须死3 通关 服务器维护,忍者必须死38月29日停服维护了什么 忍者必须死38月29日停服维护公告_游戏堡...
- 嵌入式软件开发常用的三种架构
- 鸿蒙os将用在哪款机型,鸿蒙OS即将到来,首款机型现已确认,华为P50恐无缘
- JAVA 的++y(--y)和y++(y--) 用法
- 有多少人看了《奋斗》?
- quartus找不到硬件USB-blaster及驱动无法安装,解决方法