首页 > 代码库 > 补基础:自学:计算机科学导论 第四章 数据运算
补基础:自学:计算机科学导论 第四章 数据运算
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)最后,再次规范化数
补基础:自学:计算机科学导论 第四章 数据运算