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

2017-5-30 00:03 1755 3 3 分类: 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


文章评论0条评论)

登录后参与讨论
相关推荐阅读
用户3862681 2017-05-29 23:18
Zeno's Paradox
「芝诺毕竟曾经以非数学的语言,记录下了最早同连续性和无限性格斗的人们所遭遇的困难。」 — E.T.Bell 芝诺 (Zeno of Elea) 在其著名的芝诺悖论 (Zeno's Paradox)...
我要评论
0
3
1
2
3
4
5
6
7
8
9
0
关闭 站长推荐上一条 /4 下一条