进制转换算法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35619188/article/details/85000632

用字母来表示不同的进制,B(Binary)表示二进制,O(Octal)表示八进制,D(Decimal)或不加表示十进制,H(Hexadecimal)表示十六进制。

一、其它进制转十进制

二进制转十进制

方法:

将二进制数从低位到高位计算(右边为低位),第0位的权值是2的0次方,第1位的权值是2的1次方,依次类推。 二进制就是逢二进1,二进制数采用0和1表示一个数。
例如将(1100100)B转换成十进制

1. 第0位 0 x 2^0 = 0;
2. 第1位 0 x 2^1 = 0;
3. 第2位 1 x 2^2 = 4;
4. 第3位 0 x 2^3 = 0;
5. 第4位 0 x 2^4 = 0;
6. 第5位 1 x 2^5 = 32;
7. 第6位 1 x 2^6 = 64;
8. 读数,把结果值相加,0+0+4+0+0+32+64=100,即(1100100)B=(100)D。

八进制转十进制

方法:
同二进制计算一样,从低位到高位,权值是8的n次方,第0位的权值是8的0次方,第1位的权值是8的1次方,依次类推。八进制就是逢8进1,八进制数采用 0~7这八数来表达一个数。
例如将(144)O转化成十进制

1. 第0位 4 x 8^0 = 4;
2. 第1位 4 x 8^1 = 32;
3. 第2位 1 x 8^2 = 64;
4. 读数,把结果值相加,4+32+64=100,即(144)O=(100)D。

十六进制转十进制

方法:
同二进制计算一样,从低位到高位,权值是16的n次方,第0位的权值是16的0次方,第1位的权值是16的1次方,依次类推。十六进制就是逢16进1,十六进制的16个数为0123456789ABCDEF。
例如将(64)H转化成十进制

1. 第0位 4 x 16^0 = 4;
2. 第1位 6 x 16^1 =96;
3. 读数,把结果值相加,4+96=100,即(64)H=(100)D。

二、十进制转其他进制

十进制转二进制

方法:除2取余,将十进制数依次除2取余数,然后将最后一次的余数作为最高位,类推。
例如 将(100)D转化成二进制

1. 商100除2,商50余0;
2. 商50除2,商25余0;
3. 商25除2,商12余1;
4. 商12除2,商6余0;
5. 商6除2,商3余0;
6. 商3除2,商1余1;
7. 商1除2,商0余1;
8. 一直除到商为0,读数,最后的值为最高位,即二进制(1100100)B。

十进制转八进制

方法:除8取余,将十进制数依次除8取余数,如果出现小数,则将小数单独拿出来乘8取整数,然后将最后一次的余数作为最高位,类推。整数部分要除8取余,小数部分乘8取整。
例如 将(100)D转化成八进制

1. 商100除8,商12.5余0;0.5乘8取4;
2. 商12除8,商1.5余0;0.5乘8 取4;
3. 商1除8,商0.125余0;0.125乘8 取1;
4.  这样计算起来不用算余数,直接加整数,读数,最后的值为最高位,即八进制(144)O

再例如 将(300)D转化成八进制

1. 商300除8,商37.5余0;0.5乘8 取4;
2. 商37除8,商4.625余0;0.625乘8 取5;
3. 商4除8,商0.5余0;0.5乘8 取4;
4.  这样计算起来不用算余数,直接加整数,读数,最后的值为最高位,即八进制(454)O

同时也可以使用间接法,先将十进制转换成二进制,然后将二进制又转换成八进制。

十进制转十六进制

方法:除16取余。将十进制数依次除16取余数,如果出现小数,则将小数单独拿出来乘16取整数,然后将最后一次的余数作为最高位,类推。整数部分要除16取余,小数部分乘16取整。
例如 将(100)D转化成十六进制

1. 商100除16,商6.25余0;0.25乘16取4;
2. 商6除16,商0.385余0;0.375乘16 取6;
3.   这样计算起来不用算余数,直接加整数,读数,最后的值为最高位,即十六进制(64)H

二进制转八进制

方法:从低位往高位 取三位合成一位 不足三位的补零。小数位不变

对应关系表
二进制 八进制
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7

例如 将(1100100)B 转化成八进制

从右往左  100 为4  100为4  001为1  即 144

八进制转二进制

方法:对应上面表格进行拆数 小数位不变
例如 将(144)O转化成二进制

从右往左 4对应100 4对应100 1对应001 即001100100 高位为零 去掉 得到1100100

二进制转十六进制

方法:从低位往高位 取四位合成一位 不足四位的补零。 小数位不变

二进制 十六进制
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F

例如 将(1100100)B转化成十六进制

从右往左 4对应0100 6对应0110 不足四位高位补零即64

十六进制转二进制

方法:对应上面表格进行拆数 小数位不变
例如 将(64)H转化成二进制

从右往左 4对应0100 6对应0110 即01100100 高位为零 去掉 得到1100100

八进制与十六进制互转

方法:先转成二进制 在通过二进制转对应进制

以上为最基本的进制转换,有些地方不全有待补充。参考链接

猜你喜欢

转载自blog.csdn.net/qq_35619188/article/details/85000632
今日推荐