快速掌握二进制
#快速掌握进制
###何为进制
进制也就是进位制,是人们规定的一种进位方法。对于任何一种进制————X进制,就表示某一位置上的数运算时是逢X进一位。十进制就是逢十进一,十六进制就是逢十六进一,二进制就是逢二进一,以此类推,X进制就是逢x进位。
##常见的进制
+二进制
0 、1、 10、 11、 100、 101、 110、 111、 1000 ....
+十进制
0 、1、 2、 3、 4、 5、 6、 7、 8、 9、 10、 11、 12、 13 ....
+八进制
0、1、2、3、4、5、6、7、10、11、12、13、14、15、16、17、20、21 ...
+十六进制
0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、10、11、12、13、14、15、16、17、18、19、1A、1B、1C、1D .....
#二进制
二进制由0,1两个基本数字组成。二进制的规则是“逢二进一,借一当二”
#八进制
八进制由数码0,1,2,3,4,5,6,7,八个数字组成,每个数码对应三位二进制,八进制按照“逢八进一”的原则。基R=8=2^3
#十进制
十进制由0,1,2,3,4,5,6,7,8,9十个数字组成,十进制按照“逢十进一”的原则
#十六进制
十六进制由16个字符组成,从0~9以及A,B,C,D,E,F。十六进制是“逢十六进一”即基R=16=2^4
### 2 的次方数
*2^0 = 1;
*2^1 = 2
*2^2 = 4
*2^3 = 8
*2^4 = 16
*2^5 = 32
*2^6 = 64
*2^7 = 128
*2^8 = 256
*2^9 = 512
*2^10 = 1024
#进制转换
###其他进制转十进制
二进制1101转换为十进制
1101=1*2^3+1*2^2+0*2^1+1*2^0=13
八进制126转换成十进制
128=1*8^2+2*8^1+6*8^0=86
###十进制转换成其它进制
十进制26转换成二进制
26/2=13 余 0
13/2=6 余 1
6/2=3 余 0
3/2=1 余 1
结果为11010
十进制37转换成二进制
37/2=18 余 1
18/2=9 余0
9/2=4 余 1
4/2=2 余 0
2/2=1 余 0
结果为100101
十进制89转换成二进制
89/2=44 余1
44/2=22 余0
22/2=11 余0
11/2=5 余1
5/2=2 余1
2/2=1 余0
结果为1011001
十进制489转换为8进制
489/8=61 余1
61/8=7 余 5
结果为751
#####小结:10进制转换为N进制,将十除以N,得到的商再除以N,以此类推直到商小于N,列出各步的余数,最有由下往上倒着余数拼,高位补零。
#八四二一转换法
二进制100101转成成十进制
1*2^5+1*2^2+1*2^0=37
挑出里面所有的1,1*2^(n-1)。必须熟练记住2的各个次方,这是作为一个程序员的基础。
十进制66转换成二进制
66=64+2=1000010
把数分成几个2的次方的和
二进制10110111101转换成16进制
0101 1011 1101=5BD7
十六进制转为二进制
1c对应的是 0001 1100
结果为 11100
二进制 100101110转换为八进制
100 101 110对应 4 5 6
结果为456
# 进制转换(小数)
###十进制转二进制
+十进制数 10.25 转换为 二进制
整数部分 10 转换二进制 为 1010
小数部分 0.25
0.25 * 2 = 0.5 取 0 小数部分 0.5
0.5 * 2 = 1 取 1 小数部分 0.0 结束
最后结果 1010.01
+十进制数 12.58 转换为 二进制
整数部分 12 转换为 二进制 1100
小数部分 0.58
0.58 * 2 = 1.16 取 1 小数部分 0.16
0.16 * 2 = 0.32 取 0 小数部分 0.32
0.32 * 2 = 0.64 取 0 小数部分 0.64
0.64 * 2 = 1.28 取 1 小数部分 0.28
0.28 * 2 = 0.56 取 0 小数部分 0.56
0.56 * 2 = 1.12 取 1 小数部分 0.12
继续 永远也玩不了 ....
结果 1100.100101....
+**总结**
小数部分只有是 0.5 0.25 0 .75 0.125 0.0625 等 可以是 有限小数 转换为分数后,分母是 2的次方数 才可以转为有限小数
同样适用 十进制 转 其他进制
###二进制转十进制
+二进制 1101.1101 转为 十进制
整数部分 1101转为二进制 为 13
小数部分
0.11011 = 1*2^-1 + 1 * 2^-2 + 0 * 2^-3 + 1 * 2^-4 = 0.5 + 0.25 + 0 + 0.0625 = 0.8125
最后结果 13.8125
同样适用 其他进制 转换为 十进制
###二进制和八进制或十六进制 的小数转换
###二进制 10.10010101 转换为 八进制
整数部分 10 八进制 为 2
部分 进行拆分 3个一组, 不足右补零
100 -> 4
101 -> 5
010 -> 2
最后结果 4.452
+二进制数 10.10010101 转换为 十六进制
整数部分 10 -> 2
小数部分 拆分,4位一组
1001 -> 9
0101 -> 5
最后结果 2.95
+八进制 17.236 转换为 2进制
整数部分 17 -> 1111
小数部分
2 -> 010
3 -> 011
6 -> 110
最后结果 1111.010011110
+十六进制 a.3ef 转换为 2进制
整数部分 a -> 1010
小数部分
3 -> 0011
e -> 1110
f -> 1111
最后结果 1010.001111101111
#二进制运算
+二进制加法
1101 + 100101
000110
+100101
---------
101011
二进制减法
1001001 - 10011
1001001
- 10011
---------------
110110
二进制乘法
1001 * 110
1001
x 110
-------------
0000
1001
1001
---------------
110110
二进制除法
100110 / 110
110
-----------------
110)100110
110
--------------------------
111
110
--------------------------
10
结果 110 余 10