1、计算机进制介绍
对于整数,有四种表示方式:
- 二进制 0-1,满2进1
- 十进制 0-9,满10进1
- 八进制 0-7 ,满8进1 ,以数字0开头
- 十六进制 0-9以及A-F,满16进1(A代表10 以此类推) 以0x或者0X开头
2、进制之间的转化
2.1、其他进制转十进制
2.1.1、二进制转十进制
从最低位开始(右边),将每个位上的数提取处理,乘以2的(位数减1)次方,然后求和
eg.将1011转为10进制
1011 = 1 * 2 ^0 + 1 * 2 ^1 + 0 * 2 ^2 + 1 * 2 ^3= 11 (^代表平方)
2.1.2、八进制转十进制
从最低位开始(右边),将每个位上的数提取处理,乘以8的(位数减1)次方,然后求和
eg.将0123转为10进制
0123 = 3 * 8^0 + 2 * 8^1 + 1 * 8^2 = 83 (^代表平方)
2.1.3、十六进制转十进制
从最低位开始(右边),将每个位上的数提取处理,乘以16的(位数减1)次方,然后求和
eg.将0x34A转为10进制
0x34A = 10 * 16^0 + 4 * 16^1 + 3 * 16 ^2 = 842 (^代表平方)
2.2、十进制转其他进制
2.2.1、十进制转二进制
将该数不停除以2,直到商为0为止,然后将每步的余数倒过来,就是对应的二进制
eg.将56转为二进制
56 = 111000
2.2.2、十进制转八进制
将该数不停除以8,直到商为0为止,然后将每步的余数倒过来,就是对应的八进制
eg.将156转为八进制
156 = 0234
2.2.3、十进制转十六进制
将该数不停除以16,直到商为0为止,然后将每步的余数倒过来,就是对应的十六进制
eg.将356转为十六进制
356 = 0x164
2.3、二进制转其他进制
2.3.1、二进制转八进制
将二进制数位每三位一组(从低位开始组合 - 右边),转成对应八进制数即可
eg.将二进制 11010101 转成八进制
11010101 = 【11】【010 】【011】= 0325
2.3.2、二进制转十六进制
将二进制数位每四位一组(从低位开始组合 - 右边),转成对应十六进制数即可
eg.将二进制 11010101 转成十六进制
11010101 = 【1101】【0101】= 0xD5
2.4、其他进制转二进制
2.4.1、八进制转二进制
将八进制的每1位,转成对应的一个3位的二进制数即可
eg.请将0237转成二进制
0237 = 【10】【011】【111】= 10011111
2.4.2、十六进制转二进制
将十六进制的每1位,转成对应的一个4位的二进制数即可
eg.请将0x237转成二进制
0x237 = 【0010】【0011】【0111】= 1000110111
3、反码,原码,补码
- 二进制的最高位是符号位: 0表示正数,1表示负数
- 1===》 [0000 0001] -1===>[1000 0001]
-
正数的原码,反码,补码都一样
-
负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)
- 1===>原码[0000 0001] 反码 [0000 0001]补码[0000 0001]
- -1===>原码[1000 0001] 反码[1111 1110] 补码[1111 1111]
-
负数的补码=它的反码+1
-
0的反码,补码都是0
-
在计算机运算的时候,都是以补码的方式来运算的
- 1+1
- 1-1 =1+(-1)