数据运算——逻辑运算
- 一、逻辑运算
- 1.通过例题掌握位模式层次上的逻辑运算
- 2.位模式层次上的逻辑运算的应用
- 1.**与运算使指定位==复位==**
- 2.**或运算使指定位==置位==**
- 3.**异或运算使指定位==取反==**
- 二、移位运算
- 1.逻辑移位
- 2.循环移位
- 3.算术移位
- 算术右移
- 算术左移
- 举例
- 1>.(算术右移)
- 2>.(算术左移)
- 3>.(算术左移发生溢出)
- 三、算术运算
- 1>举例:正数加法A+B
- 2>举例:正数+负数A+B
- 3>举例:减法 正数-负数A-B
- 4>举例:减法 负数减正数A-B
- 5>举例:溢出
一、逻辑运算
位层次上的逻辑运算:与、或、非、异或
(这里之简要介绍异或运算)
检查y的输入端,如果输入是1,则输出与另一位不同
如果y=0输出就与x相同
如果y=1输出就与x相反
1.通过例题掌握位模式层次上的逻辑运算
结果:
00001000
结果:1011 1111
结果:1011 0111
2.位模式层次上的逻辑运算的应用
1.与运算使指定位复位
复位: 把一个数变成零
1010 1110 AND 1111 1000=1010 1000
2.或运算使指定位置位
置位: 把一个数变为1
1010 0110 OR 1111 1000=1111 1110
3.异或运算使指定位取反
1010 0110 XOR 1111 1000=0101 1110
ps:掩码:maskcode(上式中1111 1000为掩码)
二、移位运算
1.逻辑移位
逻辑移位不用于有符号的数
举例
2.循环移位
举例
3.算术移位
假定操作对象是一个二进制补码格式的有符号整数
算术右移
用于将整数除以2
算术左移
用于将整数乘以2
举例
1>.(算术右移)
对1001 1001算术右移1位,该模式用二进制补码存储
2>.(算术左移)
对1101 1001算术左移1位,该模式用二进制补码存储
3>.(算术左移发生溢出)
对0111 1111算术左移0位,该位模式用二进制补码存储
符号位改变了,发生溢出
三、算术运算
使用补码表示整数的加减法运算
1>举例:正数加法A+B
整数A和B都是二进制补码了,计算A+B
A=(0001 0001)B 17
B=(0001 0110)B 22
结果:
R=(0010 0111)B 39
2>举例:正数+负数A+B
A=(0001 1000)B 24
B=(1110 1111)B -17
结果:
R=(0000 0111)B +7
高位溢出不用管
虽然有溢出但不用管
正数+正数才可能(正)溢出
负数+负数可能(负)溢出
正数 - 负数 负数 - 正数会溢出
3>举例:减法 正数-负数A-B
A=(0001 1000)B 24
B=(1110 1111)B -17
永远对B(被减数)进行补码运算
B(补码)=(0001 0001)B
结果:
R=(0010 1001)B 41
4>举例:减法 负数减正数A-B
A=(1101 1101)B -35
B=(0001 0100)B 20
B(补码)=(1110 1100)B
结果:
R=(1100 1001)B -55
5>举例:溢出
A=(0111 1111)B 127
B=(0000 0011)B 3
结果:
R=(1000 0010)B -126
预期结果为130但是实际上发生了溢出,因为8位二进制补码表示的范围是-128~+127
当我们在计算机中对数字进行算数运算时,应该记住每个数字和结果都应分配在二进制位的定义范围之内
two’s complement补码
one’s complement反码