二进制计数法&原码&反码&补码
Ⅰ 前言
我们都知道,计算机的起源是数学中的二进制,没有二进制,就没有现在的操作系统。
这篇文章,将会带领大家学习程序员的第一节必修数学课——二进制。并且我会在数学上,推导原码补码。
Ⅱ 二进制计数法
A. 什么是二进制计数法?
通过我们生活中常用的十进制入手,从而理解二进制。
比如一个数,32767,它就可以做如下转化👇
32767 = 3 * 10000 + 2 * 1000 + 7 * 100 + 6 * 10 + 7 * 1
= 3 * 104 + 2 * 103 + 7 * 102 + 6 * 101 + 7 * 100
可以看到,十进制的数位(万位,千位,十位)等,全都是10n 的形式。在后面的这个表示式里,10被称为十进制计数法的基数。这也是十进制中十的由来。
理解了我们日常用的十进制,我们就容易理解二进制了。十进制的基数是十,那么二进制的基数就是二,即二进制的数位就是2n的形式。
比如110101可以做以下转化👇
(110101)2 = 1 * 25 + 1 * 24 + 0 * 23 + 1 * 22 + 0 * 21 + 1 * 20
= 32 + 16 + 0 + 4 + 0 + 1
= (53)10
根据这个思路,我们可以推导出任何进制。
B. 为什么要使用二进制?
计算机使用二进制和现代计算机系统的硬件实现有关,组成计算机系统的逻辑电路通常只有两个状态,即开关的接通与断开,或者低电平和高电平。
断开或者低电平的状态我们用“0”来表示,接通或者高电平的状态用“1”来表示。由于每位数据只有两种状态,所以即使系统受到一定程度的干扰,它仍然能分辨处数字是 0 还是 1。因此在具体的系统实现中,二进制的数据表达具有抗干扰能力强、可靠性高、方便硬件配置等优点。
相比之下,如果用十进制设计具有十种状态的电路,情况就会非常复杂。
另外,二进制也非常适合逻辑运算,逻辑中的”真“和”假“正好和二进