您的位置:首页 > 其它

进制之间的转换

2017-07-19 19:04 239 查看
作为编程人员,我们常用的进制类型为 2 进制、8 进制、10 进制以及 16 进制了,他们的表示方法为:2进制为(0b001101),也就是二进制数前加上(0b);8进制为(067),进制数前加上(0);10进制就不需多说了,什么也不加就行,而16进制前需要加上(0x),如(0x78AF)。他们的区别在于逢几进位,譬如说2进制,就是逢2进1, 8进制就是逢10进1,以此类推......

如果这样说难以理解的话,我们可以想想我们从小学到大的10进制数,10进制数它的每一位可表示的范围为【0,9】,我们以8位来举例,9 的10进制可写为 0000 0009,若想表示10的话,就要在 0000 0009 的基础上 +1,这样的话就要变成0000 0010 了,是不是逢10进了1位啊?


再说 2 进制,2 进制每一位的取值范围为【0,1】; 8 进制每一位的取值范围为【0,7】; 

最后说一下 16 进制,这一种进制有一丢丢的小不同, 16 进制每一位的取值范围为【0,15】,因为说的是一位,而15是两位数,所以我们采用了一种用一位代表两位数的方法,从【0,9】就不多说了,都是1位,可以不用变,但是【10,15】必须要变一下了,我们采用【A,F】的方法表示【10,15】这6位数,即 10 = A,11=B,...15=F。所以16进制每一位的取值范围为【0,F】! 

那二进制与其他进制是如何进行相互转换的呢?

先说10进制如何转换成2进制吧。
如:789=1100010101(B)

789/2=394 余1 第10位

394/2=197 余0 第9位

197/2=98 余1 第8位

98/2=49 余0 第7位

49/2=24 余1 第6位

24/2=12 余0 第5位

12/2=6 余0 第4位

6/2=3 余0 第3位

3/2=1 余1 第2位

1/2得0 余1 第1位
这样我们可以看到,由10进制转换成2进制的方法就是对这个 10进制数进行除二取余,直到除尽,然后逆序排列,这样就得出了此 10进制数的 2进制形式了。

再说 8进制如何转换成 2 进制吧。

8进制的一位可以表示为【0,7】,但 2 进制要表示【0,7】却需要三位,所以8 进制表示一位,那么 2 进制需要用 3 位开始表示,所以说 2 进制转化为八进制的话就应该是没三位转化为 8 进制中的一位。譬如: 8 进制中的 067 转换成 2 进制数:前面第一个数 “0” 为8进制的表示方式,真实数值应该是后面的67,我们应该从低位到高位一位一位的来转换,先说7,就可转换为 2 进制:111  ,6 则转换为 2 进制 110 ,所以8进制的(0 6 7)就可转换成 2进制中的(0b 110  
111).若是2进制转换成 8 进制,倒回去即可,原理相同。

16进制如同 8 进制般,只不过它的每一位需要 2 进制的 的 4 位来表示,举个例子吧,把16进制的(0x 89AF)转换成 2 进制该如何转换呢?也需要从低位到高位一位位来,前面
的 0x 是16 进制的的表示方式,不用管他,真是数值只是 8 9 A F,F
转换成 2 进制可表示为:1111 ,A可表示为:1010 ,9 可转换为:1001 ,8 可表示为 1000,所以
16进制数(0x 8 9 A F)转换成 2 进制数可表示为(0b 1000 1001 1010 1111)。

若还未懂,请细看
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  进制 转换