本章主要介绍数据的表示和运算。主要包括:真值和机器数的概念,无符号数的表示和作用、定点数的表示、浮点数的表示(包括浮点数的形式、浮点数的规格化、浮点数的表示范围、IEEE754标准)、定点数运算(包括移位运算、扩展运算、加减运算、乘法运算、除法运算)、浮点数运算、算术逻辑单元ALU和快速加法器。具体总结如下:

(1)数据信息有两大类:数值数据与非数值数据:

①数值数据:在数轴上有对应的点、能比较大小的数。

a)二进制表示

i.无符号数:正整数,用来表示地址等

ii.带符号数:分定点数和浮点数两种

l.定点数:

ü.定点整数:用来表示现实中的整数,一般用补码表示。

ü.定点小数:用来表示浮点数中的尾数部分。

l.浮点数:用来表示现实中的实数。用两个定点数来表示浮点数。尾数部分用定点小数表示,阶码部分(指数)用定点整数表示。一般用移码表示阶码。现代计算机统一用IEEE754标准来表示浮点数。

b)十进制表示:用二进制对十进制数进行编码,称为BCD码。一般用8421码表示。

②非数值数据:在数轴上没有对应的点的数据。如:逻辑数、西文字符、汉字等

(2)定点数运算:由专门的定点运算器实现:

①移位运算

a)逻辑移位:对无符号数进行,左(右)边补0,低(高)位移出

b)算术移位:对带符号整数进行,移位前后符号位不变,编码不同,方式不同。

c)循环移位:最左(右)边位移到最低(高)位,其他位左(右)移一位。

②扩展运算

a)零扩展:对无符号整数进行高位补0

b)符号扩展:对补码整数在高位直接补符

③加减运算

a)补码加/减运算:用于整数加/减运算。符号位和数值位一起运算,减法用加法实现。同号相加时,若结果的符号不同于加数的符号,则会发生溢出。

b)原码加/减运算:用于浮点数尾数加/减运算。符号位和数值位分开运算,同号相加,异号相减,大数减小数,结果取大数的符号。减法用加负数补码实现。

④乘法运算:用加法和右移实现。

a)补码乘法:用于整数乘法运算。符号位和数值位一起运算。采用Booth算法。

b)原码乘法:用于浮点数尾数乘法运算。符号位和数值位分开运算。数值部分用无符号数乘法实现。

⑤除法运算:用加/减法和左移实现。

a)补码除法:用于整数除法运算。符号位和数值位一起运算。

b)原码除法:用于浮点数尾数除法运算。符号位和数值位分开运算。数值部分用无符号数除法实现。

(3)浮点数运算:由专门的浮点运算器实现:

①加减运算:

a)对阶:小阶向大阶看齐,阶小的那个数的尾数右移,直到两数阶码相同,右移时,增加保护位。

b)尾数相加减:用定点数加/减运算实现。

c)规格化处理:根据结果进行左规或右规操作。

d)舍入:有就近舍入 / 正向舍入 / 负向舍入 / 截去四种方式。

e)溢出判断:当结果发生阶码上溢时,发生溢出。

②乘除运算:尾数用定点数乘/除运算实现,阶码用定点数加/减运算实现。

(4)快速加法器(并行加法器、先行进位加法器):

a)加法器是加/减/乘/除运算的基础,加法器的速度至关重要

b)进位方式是影响加法器速度的重要因素

c)并行进位方式能加快加法器速度

d)通过“进位生成”和“进位传递”函数来使各进位独立、并行产生

(5)算术逻辑单元ALU:在先行进位加法器的基础上增加其他逻辑,实现基本的算术和逻辑运算的部件。有两个操作数输入、低位进位输入、一个操作控制输入、一个结果输出、一位高位进位输出和相等标志输出等。