-
计算机系统的运算器的功能:加、减、乘、除;与、或、非等算术及逻辑运算
详见教材P104
-
运算的实现方法:补码的加减运算及溢出判别
详见教材P110
-
机器数的移位运算
在计算机运算中,经常用到移位运算。对于十进制数据,当小数点向左移一位,表明数据缩小了10倍,相当于除以10;当小数点向右移一位,表明数据放大了 10 倍,相当于乘以10。在计算机中,由于数据以二进制形式表示,且小数点位置固定,因此,二进制数据只能相对于小数点进行左移或者右移。二进制数据每相对于小数点左移一位,相当于乘以2,数据放大了2倍;每相对于小数点右移一位,相当于除以 2,数据缩小了2倍。
移位运算对于计算机具有很高的实用价值。首先,采用移位指令对数据进行放大或者缩小
倍,比采用乘除法指令进行乘以或除以
,在速度上要快得多。其次,当计算机中没有乘除运算器时,可以采用移位器和加减法器,利用乘除串行运算方法的原理来实现乘除运算器。另外,即使计算机指令系统中没有乘除运算指令,也可以利用移位指令和加减法指令来编制一个子程序,实现乘除运算功能。
计算机的移位运算分为逻辑移位、算术移位、循环移位 3 种。它们的主要区别在于符号位和移出的数据位的处理方法不同。与手工的移位运算不同,计算机的移位寄存器的字长是固定的,当进行左移和右移时,寄存器的最低位和最高位会出现空余位,最高位和最低位相应地也会被移出,那么,对空余位补充 “0” 还是 “1” 呢?移出的数据位如何处理呢?这与移位的种类和机器数的编码方法有关。
1.逻辑移位
对于逻辑移位,将移位的数据视为无符号数据,移位的结果只是数据各位在位置上发生了变化,无符号数据的数值(无正负)放大或缩小。逻辑左移时,高位移出,低位补“0”。逻辑右移时,低位移出,高位补 “0” 。移出的数据位一般置入标志位 CF(进位/借位标志)。
2.算术移位
算术移位的移位对象是带符号数据,即各种编码表示的机器数。算术移位的结果,在数值的绝对值上进行放大或缩小,同时,符号位必须要保持不变。对于原码的算术左移,符号位不变,高位移出,低位补“0”。当左移移出的数据位为“1"时,发生溢出。算术右移时,符号位不变,低位移出,高位补“0”。
对于补码的算术左移,符号位不变,高位移出,低位补“0”。当左移移出的数据位正数为“1”、负数为“0”时,发生溢出。因此,为保证补码算术左移时不发生溢,移位的数据最高有效位必须与符号位相同。所以,在硬件实现补码的算术左移时,直接将数据的最高有效位移入符号位,不会改变机器数的符号(当不发生溢出时)。算术右移时,符号位不变,低位移出,高位正数补“0”,负数补“1”,即高位补符号位。补码的移位规则如图 4.2 所示。
计算机的算术移位指令大多都采用补码的移位规则,即移位的对象为补码机器数。
反码的算术移位规则是:算术左移时,最高有效位移入符号位,低位正数补“0”,负数补“1”;算术右移时,符号位不变,高位补符号位,低位移出。
3.循环移位
循环移位,顾名思义,就是指所有的数据位在自身范围内进行左移或者右移,左移时最高位移人最低位,右移时最低位移人最高位。若与 CF标志位一起循环,称为大循环,否则,称为小循环。
-
浮点数:数值与IEEE754浮点格式表达的相互转换
-
浮点数加减运算的步骤
-
浮点加减运算器的结构框架
以上复习资料均由作者本人根据所学计算机组成原理课程大纲,参考包健《计算机组成原理与系统结构》和《2022年计算机组成原理考研复习指导》整理而成。