【软考】1 进制转换笔记
学习参考:
https://www.bilibili.com/video/BV1rc411t71D?p=2
一、十进制
数 74356.234 按十进制算法为
整数部分: 7 位权为数4,4 位权数为3,3位权数为2,5 位权数为1,6位权数为0
小数部分:2 位权数为 -1,3 位权数为 -2,4位权数 -3
进制为10,公式是 进制N的位权数次方所得
整数部分则值为 7 * 104 + 4 * 103 + 3 * 102 + 5 * 101 + 6 * 100 = 74356
小数部分则值为 2 * 10-1 + 3 * 10-2 + 4 * 10-3 = 0.234
二、进制迭代 N进制 -> 十进制
位权数的整数部分为N,小数部分为M,进制为R,位权占位值为K,可以得出任意进制转换为十进制的公式
整数部分 K * RN + K * R(N-1) + K * R(N-2) + ... + K * R0
小数部分 K * R-1 + K * R-2 .... + K * R-M
二进制样例:
二进制数 100010101.001 转换为十进制
整数部分 1 * 28 + 1 * 24 + 1 * 22 + 1 * 20 = 256 + 16 + 4 + 1 = 277 (0占位所得值还是0,忽略此部分)
小数部分 1 * 2-3 = 0.125
合并为 277.125
十六进制样例:
十六进制数 AE86.05 转换为十进制
整数部分 (A) 10 * 163 + (E)14 * 162 + 8 * 161 + 6 * 160 = 40960 + 3584 + 128 + 6 = 44,678
小数部分 5 * 16-2 = 5 * 0.00390625 = 0.01953125
合并为 44678.01953125
三、常用进制数值表
次方值 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | -1 | -2 | -3 | -4 |
2次方 | 2 ^ 12 | 2 ^ 11 | 2 ^ 10 | 2 ^ 9 | 2 ^ 8 | 2 ^ 7 | 2 ^ 6 | 2 ^ 5 | 2 ^ 4 | 2 ^ 3 | 2 ^ 2 | 2 ^ 1 | 2 ^ 0 | 2 ^ -1 | 2 ^ -2 | 2 ^ -3 | 2 ^ -4 |
4096 | 2048 | 1024 | 512 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | 0.5 | 0.25 | 0.125 | 0.0625 | |
8次方 | 8 ^ 12 | 8 ^ 11 | 8 ^ 10 | 8 ^ 9 | 8 ^ 8 | 8 ^ 7 | 8 ^ 6 | 8 ^ 5 | 8 ^ 4 | 8 ^ 3 | 8 ^ 2 | 8 ^ 1 | 8 ^ 0 | 8 ^ -1 | 8 ^ -2 | 8 ^ -3 | 8 ^ -4 |
68719476736 | 8589934592 | 1073741824 | 134217728 | 16777216 | 2097152 | 262144 | 32768 | 4096 | 512 | 64 | 8 | 1 | 0.125 | 0.015625 | 0.001953125 | 0.000244141 | |
16次方 | 16 ^ 12 | 16 ^ 11 | 16 ^ 10 | 16 ^ 9 | 16 ^ 8 | 16 ^ 7 | 16 ^ 6 | 16 ^ 5 | 16 ^ 4 | 16 ^ 3 | 16 ^ 2 | 16 ^ 1 | 16 ^ 0 | 16 ^ -1 | 16 ^ -2 | 16 ^ -3 | 16 ^ -4 |
2.81475E+14 | 1.75922E+13 | 1.09951E+12 | 68719476736 | 4294967296 | 268435456 | 16777216 | 1048576 | 65536 | 4096 | 256 | 16 | 1 | 0.0625 | 0.00390625 | 0.000244141 | 1.52588E-05 |
四、十进制到任意进制的转换
1、十进制到二进制(短除法)
将 86 变为二进制表示
用 86 / 2 = 43 余数 0,
43 / 2 = 21 余数 1,
21 / 2 = 10 余数 1,
10 / 2 = 5 余数 0,
5 / 2 = 2 余数 1,
2 / 2 = 1 余数 0,
1 / 2 = 0 余数 1
从最后余数向前计数,1010110
2、二进制到十六进制
我们可以发现 二进制一个4位值就可以表示十六进制的1位值
起始 0000 对应十六进制的0,结束 1111 对应十六进制的F
所以一个二进制值,可以通过补位的方式来转换为十六进制
例如: 10111110.0111 转换
整数部分:10111110 = [ 1011 ] 和 [ 1110 ]
1011 = 1 * 2^3 + 1 * 2^1 + 1 = 11 转换为十六进制为 B
1110 = 1 * 2^3 + 1 * 2^2 + 1 * 2^1 = 14 转换为十六进制为 E
小数部分:0111
0111 = 1 * 2^2 + 1 * 2^1 + 1 = 7
合并为 BE.7
3、同理二进制到八进制
二进制的三位值可匹配八进制的一位值, 同理可得四进制就是匹配二进制的二位值
还是用 10111110.0111 转换
整数部分:10111110 = [ 010 ] [ 111 ] [ 110 ]
010 = 1 * 2^1 = 2
111 = 1 * 2^2 + 1 * 2^1 + 1 = 7
110 = 1 * 2^2 + 1 * 2^1 = 6
小数部分:0111 = [ 011 ] [ 100 ]
011 = 1 * 2^1 + 1 * 2^0 = 3
100 = 1 * 2^2 = 4
合并为 276.34