image.png

进制转换

二进制转十进制

二的指数幂相加即可转化为十进制 1111 1111 =(27+26+25+24) + (23 + 22+21+20) =(128 +64+32+16) + (8+4+2+1) =255

十进制转化二进制

除二取余数,

二进制运算基础 - 图2

image.png

位运算基础

在计算机运算中,只有加法运算器,而减法运算是由加法运算器实现的。
‌,而真值、原码、反码、补码的出现,就是为了应对减法运算

二进制减法运算中,只要不涉及借位问题,只要将被减数取反相加,结果取反即可得出正确的结果
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】