1.进制
对于整数,有四种进制表示方式
(1)二进制:0,1, 满2进1
(2)十进制:0-9, 满10进1
(3)八进制:0-7, 满8进1,以数字0开头表示,如017
(4)十六进制:0-9以及A-F,满16进1,以0x或者0X开头表示,A-F不区分大小写。如0x2F5A
2.进制转换
2.1 其他进制转十进制
通用规则:从最低为开始(右边的),将每个位上的数提取出来,乘以位数(位数-1)次方,然后求和。
2.1.1 二进制转十进制
规则:从最低为开始(右边的),将每个位上的数提取出来,乘以2(位数-1)次方,然后求和。
例子:1011转十进制:1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 11
2.1.2 八进制转十进制
规则:从最低为开始(右边的),将每个位上的数提取出来,乘以8(位数-1)次方,然后求和。
例子:01011转十进制:1*8^3 + 0*8^2 + 1*8^1 + 1*8^0 = 521
2.1.3 十六进制转十进制
规则:从最低为开始(右边的),将每个位上的数提取出来,乘以16(位数-1)次方,然后求和。
例子:0x1011转十进制:1*16^3 + 0*16^2 + 1*16^1 + 1*16^0 = 4113
2.2 十进制转其他进制
通用规则:将该数不断除以要转的进制数,直到商为0为止,然后将每步的到的余数倒过来,就是对应的进制的结果。
2.2.1 十进制转二进制
规则:将该数不断除以2,直到商为0为止,然后将每步的到的余数倒过来,就是对应的二进制。 例子:56转二进制
56 ÷ 2 = 23 余 0
23 ÷ 2 = 14 余 0
14 ÷ 2 = 7 余 0
7 ÷ 2 = 3 余 1
3 ÷ 2 = 1 余 1
1 ÷ 2 = 0 余 1
那么得到的余数倒过来就是:111000,也就是说56转二进制就是111000
2.2.2 十进制转八进制
规则:将该数不断除以8,直到商为0为止,然后将每步的到的余数倒过来,就是对应的八进制。 例子:56转八进制
56 ÷ 8 = 7 余 0
7 ÷ 8 = 0 余 7
那么得到的余数倒过来就是:70(八进制前面用0来标识,这个是固定的,所以八进制是070),也就是说56转八进制就是070
2.2.3 十进制转十六进制
规则:将该数不断除以16,直到商为0为止,然后将每步的到的余数倒过来,就是对应的十六进制。 例子:56转十六进制
56 ÷ 16 = 3 余 8
3 ÷ 16 = 0 余 3
那么得到的余数倒过来就是:70(十六进制前面用0x或者0X来标识,这个是固定的,所以十六进制是0x38或者0X38),也就是说56转十六进制就是0x38或者0X38
2.3 二进制转八进制或者十六进制
2.3.1 二进制转八进制
规则:将二进制数每三位一组(从低位开始组合),转成对应的八进制数即可。 例子:11010101转成八进制
分组 11 010 101
每组转八进制:二进制 11 转成八进制是 3, 二进制 010 转成八进制是 2 ,二进制101转成八进制是5,所以11010101转成八进制的结果是:0325
2.3.2 二进制转十六进制
规则:将二进制数每四位一组(从低位开始组合),转成对应的十六进制数即可。 例子:11010101转成十六进制
分组 1101 0101
每组转十六进制:二进制 1101 转成十六进制是 D, 二进制 0101 转成八进制是 5,所以11010101转成十六进制的结果是:0xD5
为什么二进制转八进制要选三位一组,而二进制转十六进制要选四位一组呢?
因为二进制中的三位正好能用一位八进制来标识,三位二进制能表示的数的范围是0-7,正好一位八进制能标识的范围也是0-7
同理,四位二进制能表示的范围是 0-15,而八进制的0-F正好表示的就是0-15这个范围内的数据。
2.4 八进制或者十六进制转二进制
2.4.1 八进制转二进制
规则:将八进制的每一位,转成对应的一个三位的二进制即可(回看上一部分,是不是很熟悉)。 例子:0237转成二进制:
2 -> 010
3 -> 011
7 -> 111
那么0237转成二进制就是10011111
2.4.2 十六进制转二进制
规则:将十六进制的每一位,转成对应的一个四位的二进制即可(回看上一部分,是不是很熟悉)。 例子:0x237转成二进制:
2 -> 0010
3 -> 0011
7 -> 0111
那么0x237转成二进制就是1000110111