逻辑运算、移位运算、算术运算,整数和浮点数的加减法

一、逻辑运算

1.1 位模式上的逻辑运算

一个位有两种状态 0、1。 0 代表逻辑 “假”, 1 代表逻辑 “真”。 非(NOT)、与(AND)、 或(OR) 、异或(XOR) 是四种逻辑运算符,可用来操纵二进制位。

在这里插入图片描述

NOT:只有一个输入,输出位与输入位相反。
NOT 0 = 1,NOT 1 = 0

AND:如果一个输入中有一位是0,结果为0。
对于 x=0或1,有 x AND 0 = 0 和 0 AND x = 0

OR:如果一个输入中有一位是1 ,结果为1。
对于 x=0或1,有 x OR 1 = 1 和 1 OR x = 1

XOR:如果输入中的一位是1 ,那结果就是与其他输入中相应位相反。
对于 x=0或1,有 x XOR 1 = NOT x 和 1 XOR x = NOT x

XOR运算符可用其它三个模拟。
x XOR y = [x AND (NOT y)] OR [(NOT x) AND y]

 

1.2 模式层次上的逻辑运算

相同的4个运算符(NOT, AND、 OR和XOR)可以被应用到n位模式。

求反

NOT运算符的唯一应用就是对整个模式求反。 对模式应用此运算符把每个0变成1 , 把每个1 变成0。这种方式有时候也称为一个求反运算。

使指定的位复位

AND运算可以把一个位模式的指定位复位(置0)。这种情况下的第二个输入称为掩码。 掩码中的0位对第一个输入中相应的位进行复位。掩码中的1位使得第一个输入中相应的位保持不变。

使用掩码复位模式的最左5位。 用模式10100110测试掩码
		1 0 1 0 0 1 1 0  输入
  AND	0 0 0 0 0 1 1 0  掩码
		0 0 0 0 0 1 1 0  输出

对指定的位置位

OR运算的一个应用是把一个位模式的指定位置位(置1 )。掩码中的1位对第一个输入中的相应的位进置位, 而掩码中的0位使第一个输入中相应的位保持不变。

使用掩码把一个位模式的最左5位置位。用模式10100110测试掩码
		1 0 1 0 0 1 1 0  输入
   OR	1 1 1 1 1 0 0 0  掩码
		0 0 0 0 0 1 1 0  输出

使指定的位反转

XOR运算的一个应用是便指定的位反转,掩码中的1位对第一个输入中的相应的位进行反转,而掩码巾的0位使第一个输入中相应的位保持不变。

用掩码来反转一个模式的最左边5位。 用模式10100110检验掩码。
		1 0 1 0 0 1 1 0  输入
  XOR	1 1 1 1 1 0 0 0  掩码
		0 1 0 1 1 1 1 0  输出

 


二、移位运算

移位运算移动模式中的位,改变位的位置。可分为逻辑移位运算和算术移位运算。

2.1 逻辑移位运算

逻辑移位运算应用于不带符号位的数的模式。原因是这些移位运算可能会改变数的符号,此符号是由模式中最左位定义的

逻辑移位

逻辑右移运算把每一位向右移动一个位置。 在n位模式中, 最右位丢失,最左位填0。
逻辑左移运算把每一位向左移动一个位置。 在n位模式中, 最左位丢失,最右位填0。
在这里插入图片描述

循环移位

循环移位运算(旋转运算)对位进行移位,但没有位被丢弃或增加。
循环右移(或右旋转)把每一位向右移动一个位置,最右位被回环,成为最左位。
循环左移(或左旋转)把每一位向左移动一个位置,最左位被回环,成为最右位。
在这里插入图片描述

 

2.2 算术移位运算

算术移位运算用于二进制补码格式表示的带符号位的整数。算术右移被用来对整数除以2;而算术左移被用来对整数乘以2。这些运算都不应该改变符号位(最左位)。

算术右移保留符号位,同时也把它复制,放入相邻的右边的位中,因此符号被保存。
算术左移丢弃符号位,接受它的左边的位作为符号位。如果新的符号位与原先的相同,那么运算成功,否则发生上溢或下溢,结果是非法的。

在这里插入图片描述
 


三、算术运算

3.1 整数的算术运算

二进制补码中的加减法

整数以二进制补码表示法存储,正数的补码就是它的原码,负数的补码等于原码的反码加1。

二进制补码表示法的一个优点是加法和减法间没有区别。当遇到减法时,只简单地把它转变为加法,但要为第二个数求二进制的补 。
在这里插入图片描述在这里插入图片描述

二进制补码中的加法就像十进制中的加法一样,列与列相加,如果有进位,就加到下一列上。最后一列的进位被舍弃(因为它超出了存储范围)。在每一列中,如果没有从前一列来的进位,那就有两位相加;或者如果有从前一列来的进位,那就有三位相加。在每一列中,1的数目可以是0、1、2或3。无论1、2、3,进位只进1。

在这里插入图片描述

符号加绝对值整数的加减法

在这里插入图片描述

  1. 检查运算,如果是减法,改变第二个数(B)的符号,将减法转换为加法。
  2. 对调整后两个数符号使用XOR运算,如果结果是0,则符号是相同的。
  3. 如果符号相同,得到R=±(AM+BM),结果的符号是相同的符号,得到RM=(AM+BM)和RS=AS,下标M表示绝对值,S表示符号。这里相加两个绝对值可能会发生上溢。
  4. 如果符号不同,得到R=±(AM-BM)。需要从AM中减去BM,然后判断符号,不是一位接一位的相减,而是取第二个绝对值BM的二进制补码,相加它们。结果的符号是较大绝对值整数的符号。

a. 可以证明,如果AM≥BM那就有上溢,结果是一个正数。如果有上溢,则舍弃上溢,使结果的符号取A的符号。
b. 可以证明,AM<BM,那就没有上溢,结果是一个负数。如果没有上溢,则取结果的二进制补码,使结果的符号取B的符号。

在这里插入图片描述在这里插入图片描述在这里插入图片描述
 

3.2 实数的算术运算

像加、减、乘和除这样的算术运算都能应用于用浮点数格式存储的实数上。两实数的乘法涉及两个用符号加绝对值表示的整数的乘法;两实数的除法涉及两个用符号加绝对值表示的整数的除法。

在这里插入图片描述以浮点数存储的实数的加法和减法被简化为小数点对齐后以符号加绝对值格式(符号和尾数的组合)存储的两整数的加法和减法。

  1. 如果两数(A或B)中任意一个为0,令结果为0,过程终止,
  2. 如果运算是减法,那么改变第二个数(B)的符号来模拟加法
  3. 通过在尾数中包含隐含的1和增加指数,两个数去规范化,此时的尾数部分看作一个整数。
  4. 统一指数,这意味着要增加较小的指数,移位相应的尾数,直到两个具有相同的尾数。
  5. 把每个数的符号和尾数的组合看成一个符号加绝对值格式的整数,相加。
  6. 再次规范化。

在这里插入图片描述
 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值