为什么Base 2有二进制数?

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,即非对称的.

  • @Draemon:使用base(-2)时只需要两位数 - 就像使用base 2时一样.因此电气特性不会阻止你使用base(-2) - 它仍然只是ON或者关闭. (2认同)

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)))),然后将它们链接在一起以生成完整的寄存器加法器.

这给我们带来了两个补充:否定是容易的,并且添加混合的正数和负数自然地随后没有额外的硬件.所以减法几乎是免费的.

很少有其他表示法可以让算术如此便宜地实现,而且我知道没有更容易的算法.

  • 我觉得这种方法并没有真正使事情变得更复杂,只会增加复杂性.问题的原因部分在于关于Crash-only机器的想法.如果通过整个基础的新设计将状态转移到上层,我觉得设计可以简单地关闭和打开的过程会简单得多.不过100%肯定.我希望你能看到我的目标! (2认同)