1.前言
进制转换是计算机基础中十分基础的一环。学好进制转换对我们操作位运算符,熟悉编程背后的内存地址有着重要作用。下面我们分成几个部分分层次介绍进制转换,由易到难,让读者更能体会到进制转换背后的原理。
2.进制介绍
在计算机中,为了区别不同进制,通常用前缀和后缀来区分数值的进制。
进制 | 英文 | 范围 | 前缀 | 后缀 |
---|---|---|---|---|
二进制 | Binary | 0-1 | 0B(或0b) | B |
八进制 | Octal | 0-7 | 0O(或0) | O |
十进制 | Decimal | 0-9 | 无 | D |
十六进制 | Hexadecimal | 0-9,A-F(10-15) | 0x | H |
3.转换实例
1)其他进制转十进制
【1】二进制转十进制
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数 - 1)次方,然后求和。
例子:将 0b1011 转成十进制
0b1011 = 1 * 2的(1-1)次方 + 1 * 2的(2-1)次方 +
0 * 2的(3-1)次方 + 1 * 2的(4-1)次方
= 1 + 2 + 0 + 8 = 11
【2】八进制转十进制
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数 - 1)次方,然后求和。
例子:将 0234 转成十进制
0234 = 4 * 8^0 + 3 * 8^1 + 2 * 8^2
= 4 + 24 + 128 = 156
【3】十六进制转十进制
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数 - 1)次方,然后求和。
例子:将 0x23A 转成十进制
0x23A = 10 * 16^0 + 3 * 16^1 + 2 * 16^2
= 10 + 48 + 512 = 570
2)十进制转其他进制
【1】十进制转二进制
规则:将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。
例子:将 34 转成二进制
【2】十进制转八进制
规则:将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。
例子:将 131 转成八进制
【3】十进制转十六进制
规则:将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。
例子:将 237 转成十六进制进制
3)二进制转八和十六进制
【1】二进制转八进制
规则:从低位开始,将二进制数每三位一组,转成对应的八进制数即可。
例子:将 0b11010101 转成八进制
0b11(3) 010(2) 101(5) => 0325
【2】二进制转十六进制
规则:从低位开始,将二进制数每四位一组,转成对应的十六进制数即可。
例子:将 0b11010101 转成十六进制
0b1101(D) 0101(5) => 0xD5
4)八和十六进制转二进制
【1】八进制转二进制
规则:将八进制数每 1 位,转成对应的一个 3 位的二进制数即可。
例子:将 0237 转成二进制
02(010)3(011)7(111) => 0b1001111
【2】十六进制转二进制
规则:将十六进制数每 1 位,转成对应的 4 位的一个二进制数即可。
例子:将 0x23B 转成二进制
0x2(0010)3(0011)B(1011) => 0b001000111011