进制相关知识
一、几个常见的进制
- 十进制
0-9,满10进1
- 二进制
0 1,满2进1
- 八进制
0-7,满8进1
- 十六进制
0-9及A-F,满16进1,以0x或者0X开头表示
二、进制相互转换
a、十进制
1、十进制转二进制
十进制整数转二进制数:“除以2取余,逆序排列”(除二取余法)
如 十进制89转换为二进制 89/2....1 44/2....0 22/2....0 11/2....1 5/2....1 2/2....0 1 准换为二进制为:1011001
2、十进制转八进制
十进制整数转八进制数:“除以8取余,逆序排列”(除八取余法)
如十进制89转换为八进制 89/8....1 11/8....3 1 准换为八进制为:131
3、十进制转十六进制
十进制整数转十六进制数:“除以16取余,逆序排列”(除16取余法)
如十进制89转换为十六进制 89/16....9 5 准换为十六进制为:59
b、二进制
1、二进制转十进制
整数二进制用数值乘以2的幂次依次相加,小数二进制用数值乘以2的负幂次然后依次相加,首位如果是0就代表是正整数,如果首位是1则代表是负整数
如二进制1011转换为十进制 1011 = 1* 2^0 + 1 * 2^1 + 0* 2^2 + 1* 2^3 = 1+2+0+8=11 0.1010 = 0* 2^0 . 1* 2^(-1)+1* 2^(-2)+0* 2^(-3)+1* 2^(-4)=0.5+0.25+0+0.0625=0.8125
2、二进制转八进制
将二进制的每三位一组(低位开始),转成对应的八进制即可
如二进制10110101转换为八进制 10110101 = 10 110 101=265
3、二进制转十六进制
将二进制的每四位一组(低位开始),转成对应的十六进制即可
如二进制10110101转换为十六进制 10110101 = 1011 0101=B5
c、八进制
1、八进制转十进制
整数八进制用数值乘以8的幂次依次相加
如八进制2156转换为十进制 2156 = 68^0+58^1+18^2+28^3 = 6+40+64+1024=1134
2、八进制转二进制
将八进制每一位,转成对应的一个3位的二进制数即可
如八进制156转换为二进制 156 = 1 5 6 = 1 101 110 = 1101110
3、八进制转十六进制
八机制先转化为二进制,二进制再转化为十六进制
d、十六进制
1、十六进制转十进制
整数十六进制用数值乘以16的幂次依次相加
如十六进制3A转换为十进制 A3B = 1116^0+316^1+10*16^2 = 11+48+2560=2619
2、十六进制转二进制
将十六进制每一位,转成对应的一个4位的二进制数即可
如十六进制156转换为二进制 156 = 1 5 6 = 1 0101 0110 = 101010110
3、十六进制转八进制
十六机制先转化为二进制,二进制再转化为八进制
三、进制的运算
计算机内部处理的信息,都是采用二进制数来表示的
原码、反码、补码
对于有符号而言
- 二进制的最高位是符号位,0表示正数,1表示负数
1 0000 0001 -1 1000 0001
- 正数的原码、反码、补码都是一样的
- 负数反码 等于 他原码符号位不变 + 其他位取反(0->1,1->0)
- 负数的补码 等于 它的反码+1
数字 | 原码 | 反码 | 补码 |
---|---|---|---|
1 | 0000 0001 | 0000 0001 | 0000 0001 |
-1 | 1000 0001 | 1111 1110 | 1111 1111 |
- 0的反码与补码都是0
- 在计算机运算的时候,都是以补码的方式来运算的
运算符 | 运算规则 |
---|---|
& | 两位全为1,结果才为1,否则为0 |
| | 两位有一个为1时为1,结果为1,否则为0 |
^ | 两位不相同时(1个为0,1个为1),结果为1,否则为0 |
>> | 低位溢出,符号位不变,并用符号位补溢出高位 |
<< | 符号位不变,低位补0 |
练习:
- 2&3
2 0000 0010
3 0000 0011
0000 0010 ---> 2
- 2|3
2 0000 0010
3 0000 0011
0000 0011 ---> 3
- 2^3
2 0000 0010
3 0000 0011
0000 0001 ---> 1
- -2^3
-2 1000 0010
-2的反码 1111 1101
-2的补码 1111 1110
3 0000 0011
1111 1101
结果转补码 1111 1100
补码转原码 1000 0011 ---> -3
- 2>>3
2 0000 0010 ---> 0000 0000 ---> 0
- 2<<3
2 0000 0010 ---> 0001 0000 ---> 16
注意:本文归作者所有,未经作者允许,不得转载