进制
对于一个整数,有四种表示方式:
- 二进制:0,1 满2进1 以
0b
或者0B
开头 - 十进制:0 - 9 满10进1
- 八进制:0 - 7 满8进1 以数字
0
开头 - 十六进制:0 - 9以及A(10) - F(15) (A-F不区分大小写) 满16进1 以
0x
或者0X
开头
进制的转换
进制的转换是程序员的一个基本功
其他进制转十进制
二进制转十进制
从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,再求和
0b1011 = 1 * 2^0 + 1 * 2^1 + 0 * 2^2 + 1 * 2^3 = 11
八进制转十进制
从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数-1)次方,再求和
0234 = 4 * 8^0 + 3 * 8^1 + 2 * 8^2 = 156
十六进制转十进制
从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方,再求和
0x23A = 10 * 16^0 + 3 * 16^1 + 2 * 16^2 = 570
十进制转其他进制
十进制转二进制
将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就得到对应的二进制
34 = 0B100010
由于一个字节是有八位的,所以最后的结果位34 = 0B00100010
十进制转八进制
将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就得到对应的八进制
131 = 0203
十进制转十六进制
将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就得到对应的十六进制
237 = 0XED
其他进制转二进制
八进制转二进制
将八进制的每一位,转成对应的一个3位二进制即可
0237 = 0b010011111
由于一个字节是有八位的,所以最后的结果位0237 = 0b10011111
十六进制转二进制
将十六进制的每一位,转成对应的一个4位二进制即可
0x23B = 0b001000111011
二进制转其他进制
二进制转八进制
从低位开始,将二进制数每三位一组,转成对应的八进制即可
0b11010101 = 0325
二进制转十六进制
从低位开始,将二进制数每四位一组,转成对应的十六进制即可
0b11010101 = 0xd5