数字不同进制之间的转换
各进制介绍
二进制 0 和 1 ,满 2 进 1
八进制 0 - 7 ,满 8 进 1
十六进制 0 - 9 及 a - f ,满 16 进 1 ,a - f 不区分大小写,以 0x 开头表示
各进制之间的转换
二进制转十进制
从最低位开始,将每个位上的数提取出来,乘以 2 的 (位数 - 1)次方,最后求和
1011 = 1 * 1 + 1 * 2 + 0 + 1 * 2 * 2 * 2 = 1 + 2 + 0 + 8 = 11
八进制转十进制
从最低位开始,将每个位上的数提取出来,乘以 8 的 (位数 - 1)次方,最后求和
0123 = 3 * 1 + 2 * 8 + 1 * 8 * 8 + 0 = 3 + 16 + 64 = 83
十六进制转十进制
从最低位开始,将每个位上的数提取出来,乘以 16 的 (位数 - 1)次方,最后求和
0x34A = 10 * 1 + 4 * 16 + 3 * 16 * 16 = 10 + 64 + 768 = 842
十进制转二进制
将该数不断除以 2,直到商为 0 为止,然后将每步得到的余数倒过来
例:将 56 转为二进制
商 | 余数 | |
---|---|---|
56 / 2 | 28 | 0 |
28 / 2 | 14 | 0 |
14 / 2 | 7 | 0 |
7 / 2 | 3 | 1 |
3 / 2 | 1 | 1 |
1 / 2 | 0 | 1 |
将得到的余数倒过来为:111000,即 56 转为二进制等于 111000
十进制转八进制
将该数不断除以 8,直到商为 0 为止,然后将每步得到的余数倒过来
例:将 156 转为八进制
商 | 余数 | |
---|---|---|
156 / 8 | 19 | 4 |
19 / 8 | 2 | 3 |
2 / 8 | 0 | 2 |
将得到的余数倒过来为:234,即 156 转为八进制等于 234
十进制转十六进制
将该数不断除以 16,直到商为 0 为止,然后将每步得到的余数倒过来,在开头拼接 0x
例:将 356 转为十六进制
商 | 余数 | |
---|---|---|
356 / 16 | 22 | 4 |
22 / 16 | 1 | 6 |
1 / 6 | 0 | 1 |
将得到的余数倒过来为:164,在开头拼接 0x,即 356 转为十六进制等于 0x164
二进制转八进制
将二进制的每三位一组(从低位开始组合),转成对应的八进制数即可
例:将 11010101 转为八进制
低位开始三位一组 | 对应八进制数 |
---|---|
101 | 5 |
010 | 2 |
011 | 3 |
将得到的数倒过来为:325,即 11010101 转为八进制等于 325
二进制转十六进制
将二进制的没四位数一组,转为对应的十六进制数即可
例:将 11010101 转为十六进制
低位开始四位一组 | 对应十六进制 |
---|---|
0101 | 5 |
1101 | d |
将得到的数倒过来为:d5,在开头拼接 0x,即 11010101 转为十六进制等于 0xd5
八进制转二进制
将八进制的每一位数,转成对应的 3 位的二进制即可
例:将 237 转为 二进制
低位开始的每一位数 | 对应的3位二进制 |
---|---|
7 | 111 |
3 | 011 |
2 | 010 |
将得到的数倒过来为:010011111,即八进制 237 转为二进制等于 10011111
十六进制转二进制
将十六进制的每一位数,转成对应的 4 位的二进制即可
例:将 0x237 转为二进制
低位开始的每一位数 | 对应的4位二进制 |
---|---|
7 | 0111 |
3 | 0011 |
2 | 0010 |
将得到的数倒过来为:001000110111,即十六进制 0x237 转为二进制等于 1000110111