Léo*_* 준영 0 math binary history
历史:我从Knuth的算法书中读到,第一台计算机使用了10的基数.然后,它在这里切换到了两个补码.
问题:为什么基地至少在一个幺半群中不能-2?
例子:
(-2)^1 = -2
(-2)^3 = -8
Run Code Online (Sandbox Code Playgroud)
Ric*_*ton 19
问题在于,使用negabinary(base -2)系统,它更难以理解,并且可能的正值和负值的数量是不同的.要看到后一点,请考虑一个简单的3位情况.
这里第一个(最右边)位代表小数1; 中间位代表小数-2; 第三个(最左边)位代表小数4
所以
000 - > 0
001 - > 1
010 - > -2
011 - > -1
100 - > 4
101 - > 5
110 - > 2
111 - > 3
因此,可表达值的范围是-2到5,即非对称的.
dmc*_*kee 16
从本质上讲,数字逻辑是基础.数字信号打开或关闭.支持其他基础(如BCD)意味着浪费的表示空间,更多的工程,更复杂的规范等.
编辑补充:除了数字逻辑中单个二进制数字的简单表示外,还可以在硬件中轻松实现加法,开始半加法器,可以在布尔逻辑中轻松实现(即使用晶体管):
(No carry) (with carry)
| 0 1 0 1
--+--------------------
0 | 00 01 01 10
1 | 01 10 10 11
Run Code Online (Sandbox Code Playgroud)
(返回的数字是(A xor B) xor C,并且进位是((A and B) or (C and (A or B)))),然后将它们链接在一起以生成完整的寄存器加法器.
这给我们带来了两个补充:否定是容易的,并且添加混合的正数和负数自然地随后没有额外的硬件.所以减法几乎是免费的.
很少有其他表示法可以让算术如此便宜地实现,而且我知道没有更容易的算法.