verilog设计一个补码加减法运算器_源码有符号补码的加减法以及大小比较

  • Post author:
  • Post category:其他


有符号补码的加减法以及大小比较

1.瞎扯简述

最近在写用fpga进行解缠绕的IP,解缠绕做的事情并不算复杂,就是比较后进行加减而已。但是解缠绕前面这个IP是用的xilinx的Cordic内核,算出来的是补码,过去只做了一些什么简单的取反加一的简单原码补码转换,所以在这里加减就懵了,没有真正碰过补码运算,正好借此机会好好整明白补码的操作。

8c350e4388b5938f6c7bd8ac26467274.gif

2.原码与补码的转换

什么是有符号原码,补码怎么转换的,百度即可,耐心看5分钟就整明白了。

3.表示范围

对于8位有符号数的来讲,原码很容易理解,表示范围是-127-127。但是计算机不采用原码存储,采用补码,+0和-0的补码都是0000 0000,当时最令我疑问的1000 0000为什么表示-128,对1000 0000的符号位不变,数值位取反加一,就变成了1 0000 0000,就算我人为规定了1 0000 0000这个就是-128的补码,但是计算机怎么识别呢,毕竟这是个9位数据。

其实,还是自己低估了补码的意义。

我们就来看看把1000 0000作为-128的补码能不能参与运算,为了方便大家验证,我们下面不以

8位有符号数来验证,以4位有符号数验证。4位有符号数是从-8-7ÿ