原创 二进制的补码(Signed Binary Number Representations)

2017-5-30 00:03 2209 8 8 分类: PCB

二进制世界中,当一个数字有了极性需要表达正负的时候,人们根据手写+1,-1 的习惯自然的想到了对原数字多一位编码的方式来表达正负。即在原数字前增加一位代表正负的数字来表达该数的极性,0代表整数,1代表负数。


但这种Sign+Magnitiude的表达方式在直接进行正负数的运算时会出现问题。


比如说:

+5 = 0 101

-5 = 1 101

(+5) + (-5) = 0 101 + 1 101 = ? (非零)


问题源于即数制和码制的混淆。即符号位也参与到了运算,而符号位本身又不代表大小,没有权重,谨代表数的正负。


这时二进制的补码就出现了:1's complement(Diminished radix complement) 和 2's complement(radix complement).


两种补码区别在于 1's complement 有两个0:000 和 111 都是零;而 2's complement只有一个零。

注意由于各种表达方式都有表达范围的限制,运算结果可能出现overflow。解决方法就是在运算之前先了解运算数字的范围,留出足够的余量。


未完。。。


References:



  1. <数字电子技术基础>

  2. 无名小notes


PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
8
关闭 站长推荐上一条 /3 下一条