其它进制转十进制

2、8、16转十进制公式:

1
2
3
abcde = e * 1 + d * 2 + c * 2^2 + a * 2^3
abcde = e * 1 + d * 8 + c * 8^2 + a * 8^3
abcde = e * 1 + d * 16 + c * 16^2 + a * 16^3

例如:

1
2
3
4
5
6
7
8
# binary --> decimal
100101 = 1 * 1 + 1 * 2^2 + 1 * 2^5 = 1 + 4 + 32 = 37

# oct --> decimal
123 = 3 * 1 + 2 * 8 + 1 * 8^2 =3 + 16 + 64 = 83

# hex --> decimal
0xa0c3 = 3 * 1 + 12 * 16 + 10 * 16^3 = 3 + 192 + 40960 = 41155

十进制转其它进制

公式1:将十进制数不断除以进制位数,直到无法再除时,最后得到的商以及每步得到的余数组合起来就是对应进制数的值。

公式2:用进制数的幂次方不断累加测试,主要用于十进制转2进制,偶尔用于十进制转8进制,几乎不用于10进制转16进制。

例如,123转2进制:

1
2
3
4
5
6
7
          商    余
123 / 2 = 61 -> 1
61 / 2 = 30 -> 1
30 / 2 = 15 -> 0
15 / 2 = 7 -> 1
7 / 2 = 3 -> 1
3 / 2 = 1 -> 1

其中最后一步的商为1,从后向前每步余数为111011,组合的结果是1111011,这就是123对应的2进制值。

累加法:

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

所以,123的二进制值为1111011。

10进制的123转8进制:

1
2
3
          商    余
123 / 8 = 15 -> 3
15 / 8 = 1 -> 7

所以123对应的8进制数为173。

二进制转八进制

公式:二进制数从最右开始,每3位一组计算十进制数,组合结果就是对应的八进制数值。

1
2
3
4
111001011   ->   ?
111 001 011
↓ ↓ ↓
7 1 3 -> 713

所以结果是0713

二进制转十六进制

公式:二进制数从最右开始,每4位一组计算十进制数,组合结果就是对应的十六进制数值。

1
2
3
4
111001011   ->   ?
1 1100 1011
↓ ↓ ↓
1 12 11 -> 1CB

所以结果是0x1cb

八和十六进制转二进制

公式:将每一位转换成3位或4位的二进制,组合起来的结果就是对应的二进制值。

1
2
3
4
5
# 八进制的123转二进制
123
3 -> 011
2 -> 010
1 -> 001

所以8进制的123转二进制的结果是1010011。

1
2
3
4
5
# 十六进制的123转二进制
123
3 -> 0011
2 -> 0010
1 -> 0001

所以8进制的123转二进制的结果是100100011。