(
课件网) 第3章 运算方法与运算器 3.1 定点数的算术运算与实现 3.2 逻辑运算和移位操作 3.3 定点运算器 3.4 浮点数的算术运算与浮点运算器 并联 习题 3.1 定点数的算术运算与实现 定点数的机器数有原码、反码、补码等形式,本节以定点小数的补码形式来讨论定点数的加、减、乘、除运算。因为补码运算可以将减法转换为加法,补码的符号位同补码的数值位一样参与运算,且补码运算规则简单,易于实现,所以现代计算机中的数据普遍采用补码。 3.1.1 定点数加减运算 1.补码加减运算规则 假设定点小数x的补码为[x]补,定点小数y的补码为[y]补,则有: [x+y]补= [x]补+ [y]补 (mod 2) (3-1) [x-y]补= [x]补-[y]补= [x]补+ [-y]补 (mod 2) (3-2) 根据式(3-1)和式(3-2),补码加减运算的规则如下: 规则1,参与运算的数是补码,运算结果也是补码。 规则2,符号位同数值位一样参与运算,其结果的符号取决于运算结果的补码。 规则3,加法运算时,直接将两个数的补码相加;减法运算时,需要将减数变补(即用[y]补求[-y]补),然后再与被减数的补码相加。这是由于数据采用补码形式后,减法运算转换成了加法运算,所以计算机实现加减运算只需加法器,无需减法器。我们在进行减法运算时也只能按加法进行运算。 规则4,补码的运算是有模的运算,如果运算结果超出了模(即符号位的运算产生了进位),则模将自动丢失。这样处理的结果并非错误,但还需要进一步进行溢出判断。 2.溢出与溢出判断 溢出是指运算结果超出了机器所能表示的数的范围。如果运算结果超出了机器所能表示的最大正数,则称为上溢(正溢出);如果运算结果超出了机器所能表示的最小负数,则称为下溢(负溢出)。一旦出现溢出,机器将无法表示正确结果,因此,计算机在运算的过程中必须正确判断溢出并及时处理。 1) 单符号判别法 单符号判别法是根据参与运算数的符号和运算结果的符号进行判断溢出。设 [x]补=x0.x1x2…xn-1,[y]补=y0.y1y2…yn-1,[z]补=[x+y]补=z0.z1z2…zn-1,溢出标志为V,则溢出标志V与符号位(x0、y0、z0)之间的关系如表3-1所示。根据真值表3-1,可得出溢出的判断条件为 V = x0y0z0+x0y0z0(x0 y0)(x0 y0) 表3-1 溢出标志(V)与符号位(x0、y0、z0) 之间的真值表 2) 双符号判别法 双符号判别法也称为变形补码法,是根据结果的变形补码来进行判断溢出的。变形补码的定义如下:设x为n位的二进制数据,式(3-3)和式(3-4)分别给出了x为定点小数±0.x1x2…xn-1和x为定点整数 ±x1x2…xn-1的变形补码定义。 定点小数变形补码的定义如下: (3-3) 定点整数变形补码的定义如下: (3-4) 由定义可知: (1) 变形补码只是比普通补码多了一位符号位,所以,变形补码也称双符号位补码。 如:[x]补=x0.x1x2…xn-1,则[x]变补=x0x0.x1x2…xn-1,其中,x0x0为00表示正数,x0x0为11表示负数。 (2) 变形补码的加减运算与普通补码的加减运算相同,只不过两个符号位都参与了运算,运算结果为: ,其中 是结果的两个符号位,其含义为: ,表示结果为正,无溢出; ,表示结果为负,无溢出; ,表示结果正溢出; ,表示结果负溢出。 由此可见,当 不一致时,结果便产生溢出。因此,采用变形补码进行运算时,溢出的判断条件为 。 3) 进位判别法 当最高有效位产生进位而符号位无进位时,产生正溢;当最高有效位无进位而符号位产生进位时,产生负溢。故溢出的判断条件为V=Cs C0,其中Cs为符号位产生的进位,C0为最高有效位产生的进位。 ... ...