十进制与二进制,八进制,十六进制的换算

复习一下二进制,八进制,十六进制之间的互相转换和怎么用十进制去转换它们

首先做一个定义: B(Binary)表示二进制,O(Octal)表示八进制,D(Decimal)或不加表示十进制,H(Hexadecimal)表示十六进制,比如:(101011)B=(53)O=(43)D=(2B)H

十进制转换成二进制

除二取余法

二进制说白了就是 0 和 1 啊,在十进制的时候就是2的次方

以十进制的(43)D为例:

1
2
3
4
5
6
7
43/2=21%1
21/2=10%1
10/2=5 %0
5 /2=2 %1
2 /2=1 %0
1 /2=0 %1
以上把余数倒着排就是二进制的结果了,即101011

阶段相减法(适合低次方的速算)

每次都减去最大的值,还是拿(42)D举例:42-32-8-2-1=0, 对应以下的表格为:

64 32 16 8 4 2 1
2^6 2^5 2^4 2^3 2^2 2^1 2^0
0 1 0 1 0 1 1

结果就是: 101011

十进制转二进制

以 (101011)B 举例:

1
1*2^0 + 1*2^1 + 1*2^3 + 1*2^5 = 43

十进制转八进制和十六进制

都是用的除8或16取余法,不做赘述了,有点区别就是16进制的9以后就是abcd…代替的
这等式就自己进行一下验算好了: (101011)B=(53)O=(43)D=(2B)H

二进制转八进制、十六进制

先复习一个等式: 2^0 * 2^1 * 2^2 = 2^3, 那么二进制转八进制就是将二进制的数三个为一组合并一下:

1
101|011 => 53

同理, 二进制转16进制就是按四个为一组合并一下:

1
0010|1011 => 2b

十六进制和八进制之间转换

都是先转换成二进制,然后再转成想要的进制