数据运算——逻辑运算

一、逻辑运算

位层次上的逻辑运算:与、或、非、异或
(这里之简要介绍异或运算)
检查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
ps:符号位变化
(0+0=1,1-0=0,0-1=1)

以下都是可能
正数+正数才可能(正)溢出
负数+负数可能(负)溢出
正数 - 负数 负数 - 正数会溢出

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反码

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值