进制转换
这篇博客会展示二进制转换成十进制、八进制、十六进制;以及十进制、八进制、十六进制转换成二进制。(如有错误,欢迎指正)
认识数
首先我们要记住一些必要的二进制数字,在八进制和十六进制的数字。
- 二进制在要换成八进制的前提 ,我们都知道,二进制转八进制是把数字三位一划分,则要记住这些数字的二进制;
- 二进制在要换成十六进制的前提 ,二进制转十六进制是把数字四位一划分,则要记住这些数字的二进制;
特别强调:从十开始是A-F
开始正题
二进制转十进制
例:
(
1011.101
)
2
=
1
∗
2
0
+
1
∗
2
1
+
0
∗
2
2
+
1
∗
2
3
+
1
∗
2
−
1
+
0
∗
2
−
2
+
1
∗
2
−
3
=
(
11.625
)
10
(1011.101)_2=1*2^0+1*2^1+0*2^2+1*2^3+1*2^{-1}+0*2^{-2}+1*2^{-3}=(11.625)_{10}
(1011.101)2=1∗20+1∗21+0∗22+1∗23+1∗2−1+0∗2−2+1∗2−3=(11.625)10
以小数点为中心,小数点左边的数字都是以2的0次方依次向左边去,小数点右边的数字都是以2的-1次方开始,依次向右边去。是一个发散的样式。
ps:八进制转十进制是把上面的2换成8,十六进制也是这样,换成16.
十进制转二进制
例:
(
122
)
10
=
(
?
)
2
(122)_{10}=(?)_2
(122)10=(?)2
在这里一般是用的除以二来算的,其实可以使用一种加法来算,我个人感觉比较简单。 122=64+32+16+8+2
我们先找到不超过这个十进制数的2的幂次方数,然后依次找下一个加上去,直到凑够这个十进制数。注意:这里的数都是2的某个幂次方数。
然后我们以这个例子看:64是2的6次方,则二进制数有7个,则可以按照下面的方法来写,第一行是初始 的数字,第二行是最终的二进制数,那个位置上有对应的数为1,没有则是0.
特别的十进制小数转二进制数
例:
(
122.59375
)
10
=
(
?
)
2
(122.59375)_{10}=(?)_2
(122.59375)10=(?)2 我们写这个数字的时候要把整数部分和小数部分分开来写。122我们上面算好了是1111010;
下面来算0.59375;
我们使用的是乘2法。如果这个数X2后大于1 ,则把这个1放出去,继续以小数位相乘,如果么有1大,则写入0,依次直到没有小数位为止。
二进制转八进制
前面我们已经说过二进制转八进制是以三位合一位来写的
例:
(
111011110.001
)
2
=
(
?
)
8
(111011110.001)_2=(?)_8
(111011110.001)2=(?)8
我们可以写成这样,三位合一位。
111 101 110.001,要是不够的,要补0;
然后计算。111是7、101是3、110是6、001是1,则
(
111011110.001
)
2
=
(
736.1
)
8
(111011110.001)_2=(736.1)_8
(111011110.001)2=(736.1)8
二进制转十六进制
十六进制是四位合一位的,和八进制类似
例:
(
10001111
)
2
=
(
?
)
16
(10001111)_2=(?)_{16}
(10001111)2=(?)16
1000是8、1111是15也就是F,则
(
10001111
)
2
=
(
8
F
)
16
(10001111)_2=(8F)_{16}
(10001111)2=(8F)16
八进制转二进制
我们已经知道二进制转八进制是三位合一位,那么反过来,八进制转二进制是一位拆成三位。
例:
(
127
)
8
=
(
?
)
2
(127)_8=(?)_2
(127)8=(?)2
1是001、2是010、7是111,则
(
127
)
8
=
(
001010111
)
2
(127)_8=(001010111)_2
(127)8=(001010111)2
十六进制转二进制
同上面的八进制转二进制,这个十六进制是一位拆成四位。
例:
(
8
F
)
16
=
(
?
)
2
(8F)_{16}=(?)_2
(8F)16=(?)2
上面已经知道,这里就不在说了,结果是
(
8
F
)
16
=
(
10001111
)
2
(8F)_{16}=(10001111)_2
(8F)16=(10001111)2
八进制转十六进制
这个不能直接转,要从八进制转到二进制,再从二进制转到十六进制
例:
(
127
)
8
=
(
001010111
)
2
=
(
057
)
16
(127)_8=(001010111)_2=(057)_{16}
(127)8=(001010111)2=(057)16
十六进制转八进制
这个也是,要从十六进制转到二进制,再从二进制转到八进制。
下一篇博客会讲二进制的原码,反码,补码,移码以及IEEE754标准的32位浮动数的二进制存储格式。