计算机凭啥用二进制不管是不是程序员,大家可能都知道二进制是个什么东西,下面我们就来聊聊关于编程为什么要用二进制?接下来我们就一起去了解一下吧!

编程为什么要用二进制(计算机凭啥用二进制)

编程为什么要用二进制

计算机凭啥用二进制

不管是不是程序员,大家可能都知道二进制是个什么东西。

包括计算机在内,几乎所有电子设备都采用的二进制。

可是,为什么会这样呢?

在说这个问题之前,先解决另一个问题——为什么大多数国家的人类都采用十进制?

因为,人类有十根手指。

然后,没了。


当然,在人类文明发展的长河中,也诞生过一些其他的进制。

比如苏美尔人使用十二进制,据说是通过大拇指点其他四根手指的指节得出的。

还有玛雅人的二十进制,大概率就是还算上了脚趾。

古巴比伦用六十进制,难道是五根手指搭配十二个指节?

根据人类选择计数方法的进制,不难发现,人类总是根据身边最直接的物品来确定进制。

如果人类只有七根手指,那估计我们就该用七进制了。

对人类如此,对机器也是如此。

人类有手,机器有开关。

开关只有“接通”和“断开”两种状态,正好跟“1”“0”对应。

于是,机器用二进制便成了天经地义的事情。

仅仅是表示一个数据的话,二进制似乎只要增加位数就能做到。

但要命的来了。数字不光有正数和0的存在,还有负数。

于是,人们就把最高位拿出来表示符号

正数用“0”,负数用“1”。

用这种方式表示的数字叫做机器数。也叫做原码

比如

3原码是0000 0011

-5原码是1000 0101

8bit原码数值范围为[1111 1111,0111 1111]即[-127,127],共255个数字。

看起来似乎很方便,然而,当进行不同符号的加法或同符号减法运算的时候,麻烦来了。

原码的运算不能直接判断结果的正负,需要比较两个数值的绝对值,由绝对值大的值来决定符号。

比如

“ 3” “-5”

1000 0101绝对值0000 0101

0000 0011绝对值0000 0011

符号相反的加法即是绝对值的减法

所以结果的绝对值为0000 0010(2)

再看符号,1000 0101绝对值大于0000 0011

所以结果应该为1000 0010(-2)

所以“ 3” “-5”=“-2”

很复杂对不对?

不光人觉得麻烦,机器也觉得麻烦。

于是,便有了反码。

那么,反码是什么呢?

正数的反码跟原码一致

负数的反码是将原码除符号位以外所有位取反

比如

3反码是0000 0011

-5反码是1111 1010

8bit反码数值范围为[1000 0000,0111 1111]即[-127,127] ,共255个数字。

那,反码有什么好处呢?

同样,“ 3” “-5”

0000 0011 1111 1010 = 1111 1101(-2反码)

是不是简单多了?

但,还是有一个问题。这个问题是从原码遗留下来的。

无论原码还是反码,0有正负两种0

0000 0000(原码 0)

1000 0000(原码 -0)

0000 0000(反码 0)

1111 1111(反码 -0)

这个问题又该怎么解决呢?

于是,便终于有了补码。

补码是这么表示的:

正数的补码依然是原码

负数的补码是将原码除符号位外各位取反,之后 1

也就是将反码 1

比如

3补码是0000 0011

-5补码是1111 1011

虽然有点难理解,但是采用补码之后,不光解决了计算问题,还把正负零的问题规避了。

除了这两点,补码还能比原码和反码多表示一个数字。

8bit补码数值范围为[1000 0000,0111 1111]即[-128,127] ,共256个数字。

当“ 3” “-5”时

0000 0011 1111 1011 = 1111 1110(-2补码)

0只剩下了0000 0000这一种表示方法。

反码的1111 1111现在是补码中-1。

反码的1000 0000(-127)也就成了补码可以多表示的-128

因此,在计算机系统中,数值一律用补码来表示和存储。

如今,计算机固然已经十分强大,但别忘记,是人类的智慧赋予的这一切。