目录

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中有符号数和无符号数的相关运算相关推荐

  1. 对verilog中有符号数和无符号数的理解

    文章目录 对verilog中有符号数和无符号数的理解 对verilog中有符号数和无符号数的理解 ​ verilog中使用signed表示有符号数,比如: wire signed [7:0] din; ...

  2. java中有符号数和无符号数,C语言中无符号数和有符号数之间的运算

    C语言中有符号数和无符号数进行运算(包括逻辑运算和算术运算)默认会将有符号数看成无符号数进行运算,其中算术运算默认返回无符号数,逻辑运算当然是返回0或1了. unsigned int和int进行运算 ...

  3. C语言中有符号数和无符号数的问题

    C语言中有符号数和无符号数的问题 项目说明     考虑下列代码, 这段代码试图计算数组a中所有元素的和, 其中元素的数量由参数length给出: /* WARNING: This is buggy ...

  4. Verilog有符号数与无符号数的相互转化

    Verilog有符号数与无符号数的相互转化 最近在使用DA转换时碰到一个问题,DA芯片输入的数值必须是正的,但输出的数据为有符号数,涉及到一个转化的问题,写一篇博客总结一下. 问题描述 一.正数 二. ...

  5. 关于汇编中有符号数和无符号数的判断

    首先给一段代码 1 #include <stdio.h> 2 int main() 3 {unsigned int x=9; 4  int y=-20; 5  int m=(x+y> ...

  6. Quartus中有符号数和无符号数比较大小

      有符号数和无符号数比较大小,有符号数会被当做无符号数.   代码如下.我把波形信号data和dac输出进行比较,比较结果如图.可以看到当data为正时,比较结果是对的:当data为负时,被当做正的 ...

  7. Verilog 有符号数与无符号数运算

    无符号数运算,左值位宽不够,发生截断的现象 reg [3:0] a = 4'b1111;//15 reg [3:0] b = 4'b0010;//2 wire [3:0] c; wire [3:0] ...

  8. c语言 有符号数与0作比较大小,C语言中有符号数与无符号数能否进行比较运算...

    无符号数和有符号数是不能进行比较运算的,否则可能会出现意想不到的错误,且极难检查出来! 首先肯几个例子(假设在32位的机器上): 1         1. 0 == 0U 2         2. - ...

  9. verilog有符号数和无符号数的计算

    有符号和无符号数 在电路设计中肯定会使用到有符号数无符号数的运算,今天简单说说具体怎么使用有符号数无符号数进行运算,这里以减法为例. 我们知道计算机运算都是以二进制的形式进行的,不过遇到负数,通常用二 ...

最新文章

  1. c语言计算日出日落时间_计算日出日落算法实现
  2. PHOTOSHOP 快捷键
  3. java如何將數組反轉_Java基礎練習題 (4)數組操作
  4. 从玉谋定农业大健康-国情讲坛·林裕豪 :粤港澳大湾区菜篮子
  5. 详解自然语言处理5大语义分析技术及14类应用(建议收藏)
  6. socket编程五种模型
  7. 搭建用友开发环境(基于碧桂园的nchome)
  8. python数据处理可以做什么菜_厌倦了EXCEL想玩点新花样?教你利用Python做数据筛选(下)...
  9. Mysql 全局锁入门
  10. 格式化Mac硬盘---DoYourData Super Eraser安全、快速
  11. java中通过正则表达式提取数字
  12. IBatisNet初步体验
  13. java word转pdf 在linux转pdf乱码解决方法
  14. 姓名计算机编码,姓名代码
  15. c语言求信源的信息熵,[转载]关于信息熵及信源熵率
  16. 金山文字 职称计算机,计算机职称考试金山文字2005考试大纲
  17. 平均指标指数与平均数指数的区别
  18. FastDFS文件服务器升级内置nginx版本
  19. Qt 之 自定义窗口标题栏
  20. bzoj 3772 :精神污染 线段树+打标记 or 主席树

热门文章

  1. 国产文档控件Spire.Doc for.NET ,增强从 Word 到 PDF 和 HTML 的转换
  2. MySQL时间类分区写SQL的一些注意事项
  3. 登陆验证发展史(cookie认证->session认证->token认证->JWT,单系统登陆->多系统单点登陆)
  4. 【数据结构】线性表4——顺序表和链表的比较
  5. 忍者必须死3 通关 服务器维护,忍者必须死38月29日停服维护了什么 忍者必须死38月29日停服维护公告_游戏堡...
  6. 嵌入式软件开发常用的三种架构
  7. 鸿蒙os将用在哪款机型,鸿蒙OS即将到来,首款机型现已确认,华为P50恐无缘
  8. JAVA 的++y(--y)和y++(y--) 用法
  9. 有多少人看了《奋斗》?
  10. quartus找不到硬件USB-blaster及驱动无法安装,解决方法