一:熟记二进制几个特殊数字。
- 问:为什么只记忆这几个数字?
- 答:因为IP地址使用二进制表示,范围是从00000000.00000000.00000000.00000000到11111111.11111111.11111111.11111111,而0在二进制和十进制中都是0,而二进制的11111111在十进制中就是255,所以IP地址就是从0.0.0.0到255.255.255.255。
十进制数字 二进制表示
128 10000000
192 11000000
224 11100000
240 11110000
248 11111000
252 11111100
254 11111110
255 11111111
十进制数字 | 二进制表示 |
---|---|
128 | 10000000 |
192 | 11000000 |
224 | 11100000 |
240 | 11110000 |
248 | 11111000 |
252 | 11111100 |
254 | 11111110 |
255 | 11111111 |
2.找到二进制的转换规律。
十进制数字 | 规律 |
---|---|
128 | 128+ 2^6 (64)=192 |
192 | 192+ 2^5 (32)=224 |
224 | 224+ 2^4 (16)=240 |
240 | 240+ 2^3 (8)=248 |
248 | 248+ 2^2 (4)=252 |
252 | 252+ 2^1 (2)=254 |
254 | 254+ 2^0 (1)=255 |
255 | 255是最后一个 |
- 你会发现规律,从128–225,每两个数之间的差是递减的:64-32-16-8-4-2-1.把这个记住。
3.转二进制的规则理解。
上面的都记住之后,我们就可以开始理解这个算法了。
规则1:
我们把8位的二进制,从右向左,对应数字 2的0次方(2^0) 至 2的7次方(2^7)。
那么写出来就是:
1111 1111 |
---|
128 64 32 16 8 4 2 1 |
这个不难理解,将这个记住就ok。
规则2:
将X(0<X<256)转二进制,我们开始计算(128.64.32.16.8.4.2.1)哪些加起来等于X。我们只算加起来等于X,我们不算减法等于X,因为减法需要向前借一位,个人感觉比较复杂,不建议。
规则3:
在转化二进制中,128.64.32.16.8.4.2.1,这八个数,用到哪个,哪个对应的位置就写1,其他为0.
4.举例消化,一举例你就明白了。
-
先把规则1写下来,再开始看例子。
-
例1:
将 129转换成二进制。 -
算法:在128.64.32.16.8.4.2.1中选择数字加起来等于129.我们发现128+1=129.
我们知道128用二进制表示是 1000 0000(最开始就让你记忆的那些数字),再加上规则三,用到哪个数,哪个数就写1,因此我们得到答案是:1000 0001 -
例2:
将168转换成二进制。 -
算法:我们发现128+40=168,32+8=40,所以就是128+32+8=168,所以我们把对应的数字写成1,因此我们得到的答案是: 1010 1000
-
例3:
将244转换成二进制。 -
算法:我们发现我们已经知道240的二进制了:1111 0000,(之前记忆的),那么就是240+4=244.所以我们将240的二进制写出来,然后将4对应的位置写成1。因此我们得到的答案就是1111 0100.
-
例4:
将253转换成二进制。 -
算法:我们已经知道252的二进制了:1111 1100(之前记忆的),那么就是252+1=253,所以我们将1对应的位置写成1,得到答案1111 1101
-
例5:
将80转成二进制。 -
算法:64+16=80,将64和16这两位写成1,那么得到答案:0101 0000,最前面的0可以省略,所以我们的答案也可以写成101 0000
-
总结:我们发现我们转换X成二进制的时候,我们都是挑选最靠近X的数,而且已经是我们记忆过的数字,然后再进行加法运算。所以,只要记住前面的特殊数字和三个法则,稍稍练习,你就完全可以心算二进制。