在二进制系统中,数10相当于十进制中的数2,什么意思?
yubona
真巧,最近刚教小朋友做这个,就被邀请了(因为是写给小朋友看的,所以会稍显啰嗦,请见谅)。
进制概述
人类因为有十指,所以选择了十进制。一般情况下,你所看到的数字都是十进制的。但是,数值是绝对的,你其实可以通过不同的进制表示同一个数值。比如要表示“三个苹果”的数量,十进制表示就是 3,二进制表示就是 11。
用 N 进制计数时,需要“满 N 进一”。比如用十进制计数,“9+1”的结果达到数量十,需要把个位归零、十位进一,结果就是“10”。从这个规律来看,N 进制只需要使用 N 种不同的数字符号,因为每一位达到 N 就进位了。比如十进制使用了“0”“1”……“9”这十种数字符号,而二进制只需要使用“0”“1”这两种数字符号。至于十六进制则使用 “0”“1”……“9” 和 “A”“B”……“F” 这十六种数字符号,其中前十个是借用了已广泛使用的十个阿拉伯数字符号,后六个则借用自英文字母表。
既然在 N 进制当中总是会“满 N 进一”,那么用 N 进制表示 N 这个数值时总是会记为“10”。比如十进制表示十、二进制表示二、十六进制表示十六,都是“10”。有个笑话说“世界上只有 10 种人,一种理解二进制,另一种不理解二进制”,现在来看,你也可以这么说:“世界上只有 10 种人,一种听懂了这个笑话,一种没有听懂,还有一种没听过这个笑话”。
接下来着重讲一下二进制,因为另一种与我们生活关联紧密的东西喜欢这种进制——就是计算机。在计算机中,几乎所有数据都是使用二进制储存、运算的。计算机会选择二进制,和人类会选择十进制的理由差不多,就是因为方便。计算机可以使用高低电平表示两种不同的状态,将这两种状态用来表示二进制中的“0”和“1”,这样计算机就可以储存和处理数值了。
但是人类是使用十进制的呀!所以人与计算机打交道时,就要学会在十进制和二进制之间做转换——最起码计算机工程师需要。
进制转换
在 N 进制当中总是会“满 N 进一”,反过来说在 N 进制数值当中第二位(从右往左数,下同)上每增加了 1,数值大小实际上增加了 N。比如十进制 15 的第二位增加 1 就成了 25,比原先数值增加了十。也就是说,N 进制的第二位是几,数值上就是代表几个 N 的意思。同理,第三位、第四位、……第 M 位分别在数值上代表几个 、 、…… 的意思。所以你可以这样看待十进制的 1024(凡是没有特别标明的数值都是十进制的,下同):
同样的道理,在二进制中的 1101 可以理解为:
这就是将二进制转换为十进制的方法。反之,将十进制转换为二进制,只需要不断的除以 2,直到结果为 0 为止,然后将所有的余数从右往左连起来就是二进制了。下面就以十进制 13 为例,将其转换为二进制:
(第一位)
(第二位)
(第三位)
(第四位)
所以十进制 13 对应的二进制是 1101。
进阶技巧
再说一种将十进制转化为二进制的快速方法,这个方法要求熟记常见的 的值才行(1,2,4,8,16,32,64,128,256,512,……)。以十进制 396 为例,先找到不大于 396 的最大的 的值,也就是 256,然后按以下办法从左往右依次写下 1 或 0:
因为 396 > 256,记 1,并且差为 140;
因为 140 > 128,记 1,并且差为 12;
因为 12 < 64,记 0;
因为 12 < 32,记 0;
因为 12 < 16,记 0;
因为 12 > 8,记 1,并且差为 4;
因为 4 = 4,记 1,已经没有差值了,接下来的位全部记 0;
因为 0 < 2,记 0;
因为 0 < 1,记 0。
所以十进制 396 对应的二进制值为 110001100。