进制:
- 二进制:0、1,满2进1,以 0b 或 0B 开头
- 十进制:0-9,满10进1
- 八进制:0-7,满8进1,以数字0开头
- 十六进制:0-9 及 A(10)~F(15),满16进1,以 0x 或 0X开头表示,此处A-F不区分大小写
十进制转二进制,八进制,十六进制:
十进制转二进制:
将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来就是对应的二进制
十进制转八进制:
将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来就是对应的八进制
十进制转十六进制:
将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来就是对应的十六进制
练习:
十进制:DEC 二进制:BIN
八进制:OCT 十六进制:HEX
//123转二进制
0b0111 1011
//678转八进制
01246
//8912转十六进制
0x22D0
二进制,八进制,十六进制转十进制:
二进制转十进制:
从最低位(右边)开始,将每个位上的数提取出来,乘以2(位数-1)次方,然后求和
0b1011 = 2^0 + 2^1 + 2^3 = 11
八进制转十进制:
从最低位(右边)开始,将每个位上的数提取出来,乘以8(位数-1)次方,然后求和
0234 = 4 * 8 ^ 0 + 3 * 8 ^ 1 + 2 * 8 ^ 2 = 4 + 24 + 128 = 156
十六进制转十进制:
从最低位(右边)开始,将每个位上的数提取出来,乘以16(位数-1)次方,然后求和
0x23A = 10 * 16 ^ 0 + 3 * 16 ^ 1 + 2 * 16 ^ 2 = 10 + 48 + 512 =570
练习:
//将0b110001100转成十进制
0b110001100 = 4+8+2^7+2^8
//02456转成十进制
02456 = 6 * 8 ^ 0+ 5 * 8 ^ 1+ 4 * 8 ^ 2 + 2 * 8 ^ 3
//0xA45转成十进制
0xA45 = 5 * 1 + 4 * 16 + 10 * 16 ^ 2
二进制转八进制、十六进制:
二进制转八进制:
从低位开始,将二进制数每三位一组,转换成对应八进制数即可
0b11010101 = 0b11(3)010(2)101(5) = 0325
二进制转十六进制:
从低位开始,将二进制数每四位一组,转换成对应十六进制数即可
0b11010101 = 0b1101(D)0101(5) = 0xD5
练习:
//0b11 100 101转成八进制
0b11100101 = 0b11(3)100(4)101(5) = 0345
//0b11 1001 0110转成十六进制
0b1110010110 = 0b11(3)1001(9)0110(6) = 0x396
八进制、十六进制转二进制:
八进制转成二进制:
将八进制数每一位,转成对应的一个3位的二进制数即可
0237 = 02(010)3(011)7(111) = 0b1001 1111
十六进制转成二进制:
将十六进制数每一位,转成对应的一个4位的二进制数即可
0x23B = 0x2(0010)3(0011)B(1011) = 0b0010 0011 1011
练习:
//01230转二进制
01230 = 01(001)2(010)3(011)0(000) = 0b1 010 011 000
//0xAB29转二进制
0xAB29 = 0xA(1010)B(1011)2(0010)9(1001) = 0b1010 1011 0010 1001
八进制、十六进制的相互转换:
通过转换成二进制来实现:八进制<—>二进制<—>十六进制