在FPGA的学习过程中涉及到了数的表示问题,主要包括有符号数的原码、补码表示及这些表示方法在FPGA中计算带来的问题。
补码计算的优点
原码、反码、补码等均为计算机中数的表现形式,在真值确定的情况下,使用不同表现形式的目的主要是为了简化计算。这三种表示方法的原理比较简单,在这里不做详细介绍。
计算机内部一般使用补码计算,其目的就在于简化计算流程,下面进行分析:
二进制有符号数在进行负数加法运算时会出现问题,以8位二进制数计算举例:
1的二进制表示为: 00000001;
-1的二进制表示为:10000001;
则1-1可以表示为1+(-1),即:
00000001
+10000001
=10000010
即结果为-2,明显错误。即常用的加法原则不适用于正数与负数相加,需要对计算电路进行分开设计。
再对比一下补码的计算过程:
-1的二进制补码表示为:11111110;
则1-1可以表示为:
00000001
+ 11111111
=10000000
计算结果为9位,在8位系统中最高位会被舍弃。故结果为00000000,正确。即补码的计算规则是通用的,可以使用一套电路完成所有数的加法计算,这也是计算机中使用补码计算的主要原因。
值得一提的是,补码的计算方法,即负数的反码除符号位外按位取反加1,其原理就是用0的二进制表示减去其正值对应的原码,结果即为补码。
END