FPGA学习笔记(十三)负数运算 | 您所在的位置:网站首页 › 计算器如何算负数 › FPGA学习笔记(十三)负数运算 |
系列文章目录
文章目录
系列文章目录Verilog负数负数运算原理
Verilog负数
reg寄存器是最常用的寄存器类型,这种寄存器中只能存放无符号数。如果给reg中存入一个负数,通常会被视为正数。 reg [8:0] a; //9位b声明是有符号数要加signed,做加法或乘法时,对操作数扩位处理时高位补符号位;即负数补1,正数补0; reg signed [8:0] a; a = -8'd1; a = 8'd1; 负数运算原理正数5:0 0101 负数5:1 0101 那么如何进行加减乘除呢 计算中1-2会转化为1+(-2),减法转加法,乘法转加法和位移,除法转乘法再转换 我们看到如果直接用0 0101+ 1 0101 = 1 1010 (-10) 这样结果不是0 所以出现了反码:正数的反码不变,负数的反码是符号位不变,其他取反 这样 1 0101的反码是 1 1010 再计算 0 0101+ 1 1010 =1 1111,这样的话就需要用 1111111表示0.,不方便 于是出现了补码,正数的补码不变,负数的补码加1 1 0101的补码:1 1010+1 = 1 1011 0 0101+ 1 1011= 00000 (0),于是就可以用全0表示0了。 这样用补码计算出如果最高位是0,直接转正数就行 如果最高位是1,就是负数,要倒转回去(即-1,取反) |
CopyRight 2018-2019 实验室设备网 版权所有 |