今天有个朋友问了个问题,看到IP地址转二进制,顺便复习了一下,没想到发现了诀窍
首先要搞清楚IP地址的区间是0到255,共分为a,b,c,d,e五个区间,
A 0-127
B 128-191
C 192-223
D 224-239
E 240-255
IP最大的数是255
每个IP由四组八位的二进制组成,从左往右起分别是2的(n-1)次方,所以随便拿一个256以内的数度给你化为二进制,都可以分解为权值相问加。对应的权值的位值为1,其他位为0即可。
IP是八位,
键值从左到右 1, 2, 3, 4, 5, 6, 7, 8
幂值从左到右也就是 2的 7, 6, 5, 4, 3, 2, 1, 0 次方
次方值从左往右是:2^n-1 :128, 64, 32, 16, 8, 4, 2, 1
例如:IP:192.168.80.71 转换成二进制
192 = 128 + 64 = 2^7 + 2^6 ,所以得知第一位和第二位上面有值,其他位上没有值,转换成二进制就是 11000000
168 = 128 + 32 + 8 = 2^7 + 2^5 + 2^3 ,所以得知7对应的第一位,5对应的第三位,3对应的第五位有值,其他位为0,10101000
80 = 64 + 16 = 2^6 + 2^4 , 所以得知6对应的第二位,4对应的第四位有值,其他为0,二进制为 01010000
71 = 64 + 4 + 2 + 1 = 2^6 + 2^2 + 2^1 + 2^0 ,分别是6对应的第2位,2->第6,1-->7,0-->8位上有值,所以二进制为 01000111
利用上面的计算下1000的二进制
已知2^10 = 1024, 1000小于1024,所以突破口是2的9次方
2^9 = 512
2^8 = 256
2^7 = 128
2^6 = 64
2^5 = 32
2^3 = 8
2^0 = 1
512 + 256 + 128 + 64 + 32 + 8 + 1 = 1001
所以1001的二进制为 9、8、7、6、5、3、0位上有值,为1,其他位上为0,套公式位2^(n-1) 得知 n = 9+1 = 10,所以,1001的二进制一共有十位,二进制为:1111101001
二进制: 1 1 1 1 1 0 1 0 0 1
对应幂值: 9 8 7 6 5 4 3 2 1 0
2的次方: 2^9 2^8 2^7 2^6 2^5 2^3 2^0
次方值: 512 + 256 + 128 + 64 + 32 + 0 + 8 + 0 + 0 + 1 = 1001