上一篇我们通过打比喻知道了计算机只能阅读二进制代码,这就是计算机星球的人只能听懂一种语言,所以我们地球人说:"同志们幸苦了",翻译到他们星球,就变成了"1010100000011001011111110101111001110111011001011110011110001000001011100110100111010000110"。所以如果没有翻译,两个不同语言的
人是无法交流的,当我们知道了一些翻译准则,我们甚至能直接阅读一些简单的二进制代码哦。现在我们来大概了解一下二进制数据。
如果我们注意观察,会发现电脑机箱里主板上有很多像蜈蚣一样的小房子,不同的蜈蚣可能两侧的脚数目不一样多,蜈蚣的那些个脚也叫引脚,如果我们依旧把这些元件比作外星人的话,你会发现,这些外星人因为不像我们地球人类一个手上有五个手指,所以你让这些外星人去记一个大于1的数时,他们一只手是搞不定的。
如果我们人类要记一个数字5,你可以拿张纸直接在上面写个5,但是如果什么都不给你,只给你一个前面说的蜈蚣,这个蜈蚣单侧有8条腿,你怎么通过这个道具来记录数字5呢?
我们可以这样做,在蜈蚣其中5条腿上做个标记,这样不就可以表示5了吗?这么做确实可以表示5,但如果要表示数字9的话那么这8条腿又不够用了啊,所以回想一下我们的10进制思维,如果遇到一个大于10的数我们会用进一位的方式来表示这个数,一个数字要占一个位,既然我们对于10进制数字12,我们读一十二,而不是一和二的话,同样的道理二进制里的 11并不是1和1,二应该是一二一 (即一个2加一个1,我们写程序通常会把这个读11,其实是为了好读,个人觉得对等转化的话,计算机星的人会把这个读做一二一),对于人类的3位数, 123来说,我们读作1百2十3, 即1X102加 2X10加 3,只不过这里10的2次方,我们发明了一个叫百的字来代替,所以叫1百2十3,那么计算机星球的人遇到 111又是怎么算的呢? 按照我们的思维 可以读作 一百一十一 嘛,哦不对,他们没有十只有2,那就是 一四一二一 嘛 ,只不过我们用百来象征两个10,如果你觉得前面很乱的话,我们来做个对比。
我们这么读
人类10进制 123 -> 一 百 二 十 三 -> 1 X 102 +2 X 101 +3 = 100 + 20 + 3 = 123 基数是10
计算机星人2进制 111 -> 一 四 一 二 一 -> 1 X 22 + 1 X21 + 1 = 4 +2 + 1 = 7 基数是2
这样的话,2进制是不是就很简单了,和十进制差不多,只不过是把基数换成了2,这样我们也能读懂计算机星人的二进制数字了呢,现在我们来练习一下把下面这个二进制数转化成我们地球人能懂的十进制数字吧。
0 0 1 0 0 1 1 0
->第几位 6 3 2 1 -> 第6位,第3位,第2位有数
-> 1x25 + 1x22 + 1x21 + 1x20 = 32 + 4 + 2 =38
这样我们就能提炼出一个二进制转十进制的公式了,但如果你搞清楚了原理,这个公式即便忘了也能马上推出来。
补充:8位的二进制一共能表示我们10进制最大的数是多少? 8位最大数是 11111111,我们知道给这个数加1 就等于 1 00000000 ,算出这个数再减1就是刚刚那个数了,
28-1 = 256 - 1 =255, 所以8位能表示的最大的数是255,算上0的话,可以表示256个数字。
待续...