Verilog中的有符号计算之认知补码

Verilog中的有符号计数,一般是自己定义的而不是像C语言之类的定义一个有符号变量就好了。所以,要想在FPGA的世界里随心所欲的进行有符号运算,必须先对补码有一个很好的认知,然后再注意Verilog中编程的几个特性,两者缺一不可。

对补码初步的认识:

1、正数的补码与源码相同,即正数的补码是其本身。

2、负数的补码,是对其源码(除符号位)取反再加一,于是得到其补码。

3、对负数的补码(除符号位)取反再加一,于是得到其源码。

4、正数的补码被定义为其本身,所以不需以上操作。(其实你也可以理解为正数没有补码)

5、“计算机”储存数时是以补码的形式储存的。

以四位二进制举例(最高位是其符号位):

-7,负7的源码:1_111;

-7,负7的补码:1_001;

在此提出一个看法,帮助理解,补码是给计算机看的,源码是给人看的。

看看1 + (- 2) 如何计算,我们知道负数的话都是由补码储存的所以就是1 + (-2的补码),及

0_001 + 1_110 = 1_111;(最高为为符号位),所以1111及-1的补码(对负数的补码(除符号位)取反再加一,于是得到其源码)

  这给我们了一个启示,前面说过“Verilog中的有符号计数,一般是自己定义的”,那么在写Verilog时


版权声明:本文为wangshixin1016原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。