进制转换
二进制转十进制
二的指数幂相加即可转化为十进制 1111 1111 =(27+26+25+24) + (23 + 22+21+20) =(128 +64+32+16) + (8+4+2+1) =255
十进制转化二进制
除二取余数,
位运算基础
在计算机运算中,只有加法运算器,而减法运算是由加法运算器实现的。
,而真值、原码、反码、补码的出现,就是为了应对减法运算
二进制减法运算中,只要不涉及借位问题,只要将被减数取反相加,结果取反即可得出正确的结果
1010+(-0010)负数取反后运算
1010+1101=10111运算结果取反
10111→01000
真值:
最原始的二进制数值
十进制整数 | 真值 |
---|---|
-6 | -0110 |
-11 | -1011 |
+13 | +1101 |
+5 | +0101 |
原码:
计算机没办法直接表示负数,解决办法是, 二进制的左边的一位(最高位)表示符号 0代表正,1代表负
真值 | 原码 |
---|---|
-0110 | 1 0010 |
-1011 | 1 1011 |
+1101 | 0 1101 |
+0101 | 0 0101 |
反码:
反码就是用来取被减数的反数 正数的反码等于他本身, 负数的反码除符号位外,1变0,0变1
但是反码运算减法还有几个问题 1、不能涉及借位问题 2、符号位不能参与运算
真值 | 原码 | 反码 |
---|---|---|
-0110 | 1 0010 | 1 1101(负数取反) |
-1011 | 1 1011 | 1 0100(负数取反) |
+1101 | 0 1101 | 0 1101(正数不变) |
+0101 | 0 0101 | 0 0101(正数不变) |
补码:
补码是为了解决反码的产生的问题 将最高位视为补码位,不会直接参与运算
解决反码不能借位问题: 消除借位 |
---|
一个三位数的减法(第四位为补码位) y=0234-0169 |
先加上一个最大值(1 000),再减去一个最大值(-1 000)结果不变 y=0234 + (1000) -0169 + (-1000) |
变形后就没有借位运算 y=0234 + (0999+1) - 0169 + (-1000) y=(0999- 0169 )+ 1 +0234 (-1000) y= 0830+1+0234-(1000) |
补码位同时也可以参与运算 y= 1065 - 1000 y= 65 |
通过反向,实现加法器运算减法
y = 101 - 010 y = 101 +(1 000) - 010 +(- 1 000) y = 101 + (0 111 + 0 001) - 010+(-1000) y = (0 111 - 010 ) + 101 + 0 001 + (-1000) y = 反向【0111 + 反向(010)】+ 110 + (-1000) y = 反向【0111 + 101】+ 110 +(-1000) y = 反向【0】