在过去的5500年里,人类发明了100多种不同的记录数字的方法。
出于对罗马数字的尊重,目前世界上最受欢迎的技术是现代十进制。它的用户可以用10个小字符来表达任何他们喜欢的整数:0、1、2、3、4、5、6、7、8和9。
但你的电脑采取了另一种方式。
笔记本电脑、智能手机和其他设备依赖于二进制代码。二进制是一种数学语言,将指令传递给这些高科技的小玩意儿。它会告诉你的电脑播客的声音是怎样的,YouTube视频中应该出现哪些颜色,以及你老板刚刚发来的电子邮件中使用了多少个字母。
二进制代码名不虚传。与十进制系统不同,它只使用两种类型的数字,程序员称之为“位”。通常,有“0”和“1”。这就是全部。
了解指数
从技术上讲,0和1是编写二进制数所需的唯一位。但要理解它们,你必须理解第三个值:2。
我们最好举个例子来解释一下。数字138在二进制代码中正确地表示为“10001010”。
你的电脑怎么知道这串乱码是“138”的意思呢?
编程是答案的一部分。有人告诉你的设备,在这种情况下,二进制代码拼写的是一个数字,而不是一个书面的单词或句子;解码后者有一个单独的方法。
一旦建立了这个基本事实,代码就会通过为每个单独的位(即每个0和每个1)分配不同的2指数来工作。
指数是一个值自身乘以一定次数。2的3次方,等于2 × 2 × 2,等于8。
请看以下的列表:
2 = 1
21= 2
22 = 4
23= 8
2∧4=16
2∧5= 32
2∧6 = 64
2∧7 = 128
2∧8 = 256
2∧9 = 512
2∧10 = 1024
将二进制转换为十进制
现在让我们回到最初的二进制数:10001010
书面英语是从左到右读的。但是现在,我们要从相反的方向来分解这个二进制数从右到左。
在任何二进制数中,最右边的位必须乘以2。然后最左边的数乘以21。
接下来,它左边的位乘以22。以此类推。
注意到这里的模式了吗?2的各个指数是按升序使用的,从右到左。
现在我们的工作就是保持这个模式直到我们匹配到二进制数中每一个0和1的指数2。
我们将在最后一位,也就是最左边的那位,乘以相应的2的指数后停止。
让你的数字保持直线的一个有用的方法是在一张纸上把指数在相应的二进制位上排成一行。
现在让我们回到实际的转换。
因为10001010包含8个单独的位,我们要做8个单独的乘法题。我们从最右边的0开始。
0乘以2等于多少?正确答案是0。
做完一题,还剩七题。向左移动一个空间。看到那个“1”了吗?1 × 21 = 2。现在再向左边移动一个空间。这样做会得到0 × 22,等于0。
如果您继续使用这种模式,从最右边到最左边,您将确定以下内容:
0 x 2 = 0
1 x 21 = 2
0 x 22 = 0
1 x 23 = 8
0 x 2∧4= 0
0 x 2∧5 = 0
0 x 2∧6= 0
1 x 2∧7= 128
把所有乘法题的结果加起来。不是乘法,是加法。
0 + 2 + 0 + 8 + 0 + 0 + 0 + 0 + 128等于多少?
在回答这个问题之前,我们先把这些0消掉。在加法问题中不需要它们。我们真正要做的就是解开这个谜题:
2 + 8 + 128 = ?
最后的答案是138。我们又回到了原点。
注意138是一个整数。有一种技术可以将带有小数成分的数字(如0.25和3.14)转换为二进制。
十进制到二进制的转换
将“10001010”更改为“138”之后,是时候反转我们的过程了。假设从138开始,必须将其转换为二进制。你会怎么做?
再一次,指数是整个过程的关键。
再看一下我们的“2的幂”列表。找到最接近138但不超过它的值。
快速重读一下,138位于256(即2∧8)和128(即2∧7)之间。
138减去128。等式如下:
138 - 128 = 10
接下来,拿着这10,再看一下指数列表。最接近10的2的幂是23,也就是8。所以在这一点上,我们的任务是用10减去8。像这样:
10 - 8 = 2
数字2等于21。
这个过程给了我们三个重要的数字:128、8和2。我们的下一个目标是把它们加起来。
128 + 8 + 2 = 138。
如果你还没有这样做的话,找一张纸。写出以“128”(记住,这是2∧7)和“1”(等于2)开头的2的每个指数的值。从左到右按降序进行。确保在每个数字之间留出一些空间。
应该是这样的:
128 64 32 16 8 4 2 1
如您所见,这里列出了8个单独的值。在每个值下面画一个向下的箭头(↓)。
然后,参考我们上面写的加法问题,128 + 8 + 2 = 138
你在这个问题中看到“128”了吗?如果是,在相应的箭头下面写一个“1”。方程式里有64吗?不!在箭头下面,我们要写一个“0”保持同样的模式。
剩下10001010——正如我们已经确定的,这意味着“138”。