计算机科学导论数据运算,补基础:自学:计算机科学导论 第四章 数据运算(示例代码)...

4.1 逻辑运算:指那些应用于模式中的一个二进制位,或在两个模式中相应的两个二进制位的相同基本运算。 4.1.1 位层次上的逻辑运算

0 代表逻辑 假, 1 代表逻辑 真。

4种操作: 非(NOT):只有一个输入

如果输入是0, 则输出为1。反之亦然

应用:对整个模式求反

与(AND)有两个输入

如果输入都是1, 则输出为1。输入中只要有一位是0,则结果为0

应用:把一个位模式的指定位复位(置0)。这种情况下,第二个输入称为掩码,掩码中的0位对第一个输入中相应的位进行复位。

或(OR)有两个输入

如果输入都是0,则输出为0。 输入中只要有一位是1,则结果为1

应用:把一个位模式的指定位置位(置1)

异或(XOR)有两个输入

如果输入都是1,则输出为0。也就是说,输入相同时,输出为0,不同时,则输出为1

应用:使指定的位反转。

4.1.2 模式层次上的逻辑运算

例 4.3 – 4.6 分别用NOT, AND, OR, XOR计算位模式 1 0 0 1 1 0 0 0 输入

NOT 0 1 1 0 0 1 1 1 输出

1 0 0 1 1 0 0 0 输入1

AND 0 0 1 0 1 0 1 0 输入2

0 0 0 0 1 0 0 0 输出

1 0 0 1 1 0 0 1 输入1

OR 0 0 1 0 1 1 1 0 输入2

1 0 1 1 1 1 1 1 输出

1 0 0 1 1 0 0 0 输入1

XOR 0 0 1 0 1 1 1 0 输入2

1 0 1 0 0 1 1 1 输出

4.2 移位运算 4.2.1 逻辑移位运算:应用于不带符号位的数的模式。

1.逻辑移位:逻辑右移运算把每一位向右移动一个位置。在n位模式中,最右位被丢弃,最左位填0。逻辑左移则相反。

例 4.10 将10011000逻辑左移

移位后:00110000

2. 循环移位:对位进行移位,但没有位被丢弃或增加。循环右移把每一位向右移动一个位置,最右位被回环,成为最左位。循环左移则相反。

例 4.11 将10011000循环左移

移位后: 00110001 4.2.2 算数移位运算:假定位模式是用二进制补码格式表示的带符号韦德整数。算数右移被用来对整数除以2;算数左移被用来对整数乘以2。

这些运算不应该改变符号位。算数右移保留符号位,但同时也把它复制,放入相邻的右边的位中;算数左移丢弃符号位,接受它的右边的位作为符号位。

例 4.12 对位模式10011001使用算术右移。模式是二进制补码格式的整数

解: 最左位被保留,并被复制到相邻的右边的位中。得出结果:11001100

原始数是-103,新的数是-52,它是-103被除以2并取整的结果。 例 4.13 对位模式110011001使用算数左移,模式是二进制补码格式的整数

解: 最左位被丢弃,0作为最右位被插入。得出结果10110010

原始数是-39,新的数是-78,原始数被乘以2。 例 4.14 对位模式01111111使用算术左移,模式是二进制补码格式的整数

解:最左位被丢弃,0作为最右被插入。结果为11111110

原始数是127,新的数是-2。发生上溢,结果非法。期望的答案是127 * 2 = 254,这个数不能用8位模式表示。

4.3 算术运算 4.3.1 整数的算术运算

1. 二进制补码整数的加减法

二进制补码表示法的加法和减法之间没有区别。遇到减法运算时,计算机会把它转变为加法,但要为第二个数(减数)求二进制的补。

如果给一个整数的反码加1,就得到它的补码。

过程:

1) 如果运算是减法,则取第二个整数的二进制补码,否则,转下一步。

2)两个整数相加

例4.16 以二进制补码格式存储两个整数A和B,显示B是如何被加到A上的

A = 00010001,B = 00010110

0 0 0 1 0 0 0 1    A

+0 0 0 1 0 1 1 0    B

0 0 1 0 0 1 1 1    R 例4.18 以二进制补码格式存储两个整数A和B,显示如何从A中减去B

A = 000110000, B = 11101111

相减运算,所以先要求B的补码,补码等于反码加1:

B的反码:00010000        B的补码:00010001

运算过程:

0 0 0 1 1 0 0 0    A

+0 0 0 1 0 0 0 1    B

0 0 1 0 1 0 0 1    R 注意:运算结果需要在二进制位的定义范围之内,否则会发生上溢或下溢 2. 符号加绝对值整数的加减法

流程:

1)检查运算,如果是减法,那么改变第二个整数的符号

2)对两符号应用XOR运算,如果结果是0,则意味着符号是相同的。

3)如果符号是相同的,R = +- (AM + BM),则需要加绝对值,结果的符号是相同的符号,所以得到: RM = (AM) + (BM) 和 RS = AS

下标M意味着绝对值,下标S意味着符号。相加两个绝对值时,可能会发生上溢,它必须被报告,处理过程终止。

4)如果符号不同,R = +-(AM - BM),则需要从A中减去B,然后对符号进行判断,不是一位接一位地相减,而是取第二个绝对值的二进制补码,相加它们。结果的符号是较大绝对值整数的符号。

a. 如果AM >= BM ,那就有上溢,结果是一个正数。所以,如果有上溢,则舍弃上溢,使结果的符号取A的符号

b. 如果AM < BM,那就没有上溢,结果是一个负数。所以,如果没有上溢,则取结果的二进制补,使结果的符号取B的符号

4.3.2 实数的算术运算

实数的加减法

流程:

1)如果两数(A或B)中任一个为0,那么令结果为0,过程中止

2)如果运算时减法,那么改变第二个数的符号来模拟加法

3)通过在尾数中包含隐含的1和增加指数,将两个数去规范化

4)然后统一指数,这意味着增加较小的指数,移位相应的尾数,直到两个数具有相同的指数

5)把每个数的符号和尾数的组合看成一个符号加绝对值格式的整数

6)最后,再次规范化数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值