第2章运算方法和运算器 内容提要: 本章主要介绍数据与文字的表示方法,定点加/减法运算及加法器,定点乘法运算 定点除法运算,定点运算器的组成与结构,浮点运算方法和浮点运算器。 2.1数据与文字的表示方法 补充:进位计数制及其转换 进位计数制一一按照进位计数制的方法表示数,例如十进制计数制是“逢十 进一”;而二进制则是“逢二进一”。 进位计数制的性质 2.常用的进位计数制 十进制、二进制、八进制和十六进制。 3.不同进位制之间数的转换 转换的依据是:任何两个有理数相等,则这两个数的整数和小数部分应 分别相等。 (1)十→二转换 整数部分的转换采用“除2取余法”(第1次得到的余数是二进制整数 的最低位)。 小数部分的转换采用“乘2取整法”(第1次得到的整数是二进制小数 的最高位) 还有“减权定位法”:例如(513)0=()2? 【解】513=512+1=2+2=(100001=(10000 十→八、十六转换方法与上相似。 (2)二→十转换 采用“按权展开相加法”。 (3)二→八、十六转换 方法:以小数点为基准,将二进制数向左(整数部分)和向右(小数部 分)每3(4)位为一组,每一组用相应的八进制(十六进制)数码表示即可。 例如,将二进制数100101010.10101转换为八、十六进制数 【解】先转换为八进制数:(100101010.10101)2=(45252)8 再转换为十六进制数:(100101010.10101)=(12AA8) 2.1.1数值的机器码表示: 几个术语 ①码制:计算机表示数的大小和正负的方法 ②机器数:计算机内部编码表示的数,称为机器数(码 ③真值:机器数原来的数值称为真值 ④机器数的形式:原码,补码,移码,反码
第 2 章 运算方法和运算器 内容提要: 本章主要介绍数据与文字的表示方法,定点加/减法运算及加法器,定点乘法运算, 定点除法运算,定点运算器的组成与结构,浮点运算方法和浮点运算器。 2.1 数据与文字的表示方法 补充: 进位计数制及其转换 进位计数制――按照进位计数制的方法表示数,例如十进制计数制是“逢十 进一”;而二进制则是“逢二进一”。 1.进位计数制的性质 2.常用的进位计数制 十进制、二进制、八进制和十六进制。 3.不同进位制之间数的转换 转换的依据是:任何两个有理数相等,则这两个数的整数和小数部分应 分别相等。 (1)十→二转换 整数部分的转换采用“除 2 取余法”(第 1 次得到的余数是二进制整数 的最低位)。 小数部分的转换采用“乘 2 取整法”(第 1 次得到的整数是二进制小数 的最高位)。 还有“减权定位法”:例如(513)10=( )2? 【解】513=512+1=29 +20 =(1000000000+1)2=(1000000001)2 十→八、十六转换方法与上相似。 (2)二→十转换 采用“按权展开相加法”。 (3)二→八、十六转换 方法:以小数点为基准,将二进制数向左(整数部分)和向右(小数部 分)每 3(4)位为一组,每一组用相应的八进制(十六进制)数码表示即可。 例如,将二进制数 100101010.10101 转换为八、十六进制数。 【解】先转换为八进制数:(100 101 010.101 01)2=(452.52)8 再转换为十六进制数:(1 0010 1010.1010 1)2=(12A.A8)16 2.1.1 数值的机器码表示: 几个术语: ① 码制:计算机表示数的大小和正负的方法。 ② 机器数:计算机内部编码表示的数,称为机器数(码); ③ 真值:机器数原来的数值称为真值; ④ 机器数的形式:原码,补码,移码,反码
1.原码表示: (1)定点小数的原码 ①定义 1>X≥0 X=1+|X0≥X>-1 ②原码的主要性质 a.符号位X反映真值的正负 真值为负 真值为正 例:X=+0.1101,则[X]=0.101 Y=0.1101,则Y]x=1.111 b.0的原码有两种表示形式 [-0]=1.000.0 (2)定点整数的原码 [le 0≤X<2n-1 2n-1<X≤0 式中n为字长的位数 (3)原码表示的优缺点及其应用: 优点:与真值之间的转换方便,直观,便于乘除运算 缺点:加减运算不方便 应用:实现乘除运算:作为由负数区X和X取得真值的过渡代码。 2补码表示 (1)模与同余 ①模:一个计数器的计数容量叫做模,记为mod 例:n位二进制计数器的模为20 ②同余:如果对于两个整数a和b,用同一正整数M去除,所得余数相等,则称a, b对模数M是同余的。记为:a=b(modM) 例:13=23(mod10) ( mod 12) (2)补码的定义 任意一个数X的补码,等于该数加上其模数M,即 [X]补=X+M(ModM ①用n位二进制数表示整数补码(包括一位符号),则 X0≤X≤2n--1 2n+X-2n1≤X<0 ②用n位二进制表示小数的补码(包括一位符号),则 X0≤X≤1-2 2+X 1≤X<0
1. 原码表示: (1) 定点小数的原码 ① 定义 [X ⎩ ⎨ ⎧ −>≥+=− ≥> = 10||11 01 ] XXX X X 原 ② 原码的主要性质 a.符号位X0反映真值的正负。 X0= ⎩ ⎨ ⎧ — —真值为负 0 1 — —真值为正 例:X=+0.1101,则[X]原=0.1101 Y=-0.1101,则[Y]原=1.1101 b.0 的原码有两种表示形式: [+0]原=0.000…0 [-0]原=1.000…0 (2)定点整数的原码 [ ] ⎪⎩ ⎪ ⎨ ⎧ − ≤<− <≤ − − − 2 2 0 20 1 1 1 X X X X X n n n 原= 式中 n 为字长的位数。 (3)原码表示的优缺点及其应用: 优点:与真值之间的转换方便,直观,便于乘除运算; 缺点:加减运算不方便。 应用:实现乘除运算;作为由负数[X]补和[X]反取得真值的过渡代码。 2.补码表示: (1) 模与同余 ① 模:一个计数器的计数容量叫做模,记为 mod。 例:n位二进制计数器的模为 2n ② 同余:如果对于两个整数 a 和 b,用同一正整数 M 去除,所得余数相等,则称 a, b 对模数 M 是同余的。记为:a=b (mod M) 例:13=23 (mod 10) , -7=5 (mod 12) (2) 补码的定义: ⎩ ⎨ ⎧ <≤− −≤≤ = − − 02X2 12X0X ][ n 1 1 X X n n + 补 ⎧ −≤≤ −− 21X0X [ )1( X n 任意一个数 X 的补码,等于该数加上其模数 M,即: [X]补=X+M (Mod M) ① 用 n 位二进制数表示整数补码(包括一位符号),则 ② 用 n 位二进制表示小数的补码(包括一位符号),则 ⎩ ⎨ <≤− = 01X2 ] + X 补
即:[X]=2+X(mod2) 【例21】已知二进数X=+0.10110,Y=-0.10110,Z=-1,若计算机的字长为 8位,求X、Y和Z的原码及补码。 解:〖X]=0.101100,X1*=0.10110000Y]=1.10110,Y]=1.0101000 1的定点小数的原码不存在,[Z]=1.00…0 (3)补码的主要性质: ①符号位X0反映真值的正负 j一一真值为负 真值为正 ②0的补码只有一种表示形式 +0]补=O]e=0.00.0 值得指出的是:负数的补码大于正数的补码:在正数和负数的各自范围内,补码大的, 其真值也大。反之亦然 (4)补码表示的优缺点及其应用: 优点:加减运算方便 缺点:负数补码与真值的转换不直观 应用:加减运算 3.反码表示 (1)反码的定义 设X=±0X1X2X(定点小数),则 0≤X<1 Xlk=1(2-2“)+X 1<X≤0 例:X=+0.1001,Y=0.1001 则:[X1k=01001 Y]k=(2-2-100)+(-0.1001)=1.0110 2)反码的主要性质 ①符号位X反映真值的正负 真值为负 0—一真值为正 ②0的反码有两种表示形式 +0]k=0.00.0 -0]lk=1.11..1 ③负数的反码大于正数的反码,在正数和负数各自的范围内,反码 其真值也大,反之亦然 4移码表示: (1)整数移码的定义 若定点整数X的字长为n位(包括1位符号位),则移码的定义如下 2≤X<21(md2)(28) 【例24】设X=+101,Y=-1011,若阶的位数为6位(包括1位阶符), 求X和Y的移码 【解】依定义,[X]=2104+1011=101011,Yl=210+(-101)=010101
即: [X]补=2+X (mod 2) 【例 2.1】 已知二进数 X=+0.10110,Y=―0.10110,Z=―1,若计算机的字长为 8 位,求 X、Y 和 Z 的原码及补码。 解:[X]原=0.1011000,[X]补=0.1011000,[Y]原=1.1011000,[Y]补=1.0101000。 ―1 的定点小数的原码不存在,[Z]补=1.00…0。 (3) 补码的主要性质: ① 符号位 X0 反映真值的正负 X0= ⎩ ⎨ ⎧ — —真值为负 0 1 — —真值为正 ② 0 的补码只有一种表示形式 [+0]补=[-0]补=0.00…0 值得指出的是:负数的补码大于正数的补码;在正数和负数的各自范围内,补码大的, 其真值也大。反之亦然。 (4) 补码表示的优缺点及其应用: 优点:加减运算方便; 缺点:负数补码与真值的转换不直观。 应用:加减运算。 3.反码表示: (1) 反码的定义: ⎩ ⎨ ⎧ − ≤<− <≤ = 01X)22( X 1X0 ][ n- X X 反 + 设 X=±0.X1X2…Xn(定点小数),则 例:X=+0.1001,Y=-0.1001 则:[X]反=0.1001 [Y]反=(2-2-100)+(-0.1001)=1.0110 (2)反码的主要性质: ① 符号位X0反映真值的正负 X0= ⎩ ⎨ ⎧ — —真值为正 — —真值为负 0 1 0 ② 0 的反码有两种表示形式: [+0]反=0.00…0 [-0]反=1.11…1 ③ 负数的反码大于正数的反码,在正数和负数各自的范围内,反码大的, 其真值也大,反之亦然。 4.移码表示: (1). 整数移码的定义: 若定点整数 X 的字长为 n 位(包括 1 位符号位),则移码的定义如下: n-1 n-1 n-1 n [X]移=2 +X ―2 ≤X<2 (mod 2 ) (2.8) 【例 2.4】 设 X=+1011,Y=―1011,若阶的位数为 6 位(包括 1 位阶符), 求 X 和 Y 的移码。 【解】依定义,[X]移=2110-1+1011=101011,[Y]移=2110-1+(―1011)=010101
(2).移码的主要性质: 0一一真值为负 ①符号位X0反映真值的正负,XO= 一真值为正 ②在限定的位数下,最小的负数,其移码为00……0 例:n=5位,x=2,则x]=25+(-23)=00000 ③0的移位只有一种表示形式 [0]=2+0=1,00…0 ④真值大的,其移码也大,反之亦然。这就使移码表示的阶码便于用比较电路比较阶 码的大小。 2.1.2数值数据的定点与浮点表示 1.定点表示法: 定点表示法:小数点的位置固定不变 点机:数是用定点表示的计算机。 (1)常用的定点表示: 定点于数的最高位之前: Xn- Xn 符号位量值(尾数) 表数范围: 原码:-(1-2)~+(1-2 补码 定点于数的最低位之后 符号位量值(尾数) 表数范围:原码:-(20-1)~+(22-1) 补码、移码:-2"~+(2-1) (2)定点表示的优缺点 优点:运算简单,速度快,硬件较简单 缺点:表数范围窄,运算精度低,使用不方便 2.浮点数表示:小数点的位量可以在一定范围内浮动 点机:数是用浮点表示的计算机 (1).浮点数N的构成 NER XM 在机器中的表示 指数E 尾数M 式中:E为阶,包括阶符和阶码(整数),阶码位数决定了浮点数的表数范围。 M为尾数,包括数符和尾数,表示数的精度和正负。 【例25】设数的表数范围为十进制数的±10×1030,精度要求为6位十进制有 效数字,已知lg2=0.301,基数R=2,试设计出满足以上要求的最少字长二进制 位数的浮点数据格式 【解】设阶码为m位,尾数为n位的规格化浮点数,其表数范围为
(2). 移码的主要性质: ⎩ ⎨ ⎧ — — 1 0 ① 符号位 X0 反映真值的正负,X0= —真值为正 —真值为负 ② 在限定的位数下,最小的负数,其移码为 00……0 例:n=5 位,x=-25 ,则[x]移=25 +(-25 )=0,00000 ③ 0 的移位只有一种表示形式: [0]移=2n-1+0=1,00……0 ④真值大的,其移码也大,反之亦然。这就使移码表示的阶码便于用比较电路比较阶 码的大小。 2.1.2 数值数据的定点与浮点表示 1. 定点表示法: 定点表示法:小数点的位置固定不变; 定点机:数是用定点表示的计算机。 (1)常用的定点表示: 定点于数的最高位之前: X0 . X1 X2 … Xn-1 Xn 符号位 量值(尾数) 表数范围: 原码:― -n (1―2 )~ +(1―2-n) 补码:―1 ~ +(1―2-n) 定点于数的最低位之后: X0 X1 X2…Xn-1 Xn . 符号位 量值(尾数) 表数范围:原码:―(2n ―1) ~ +(2n ―1) 补码、移码:―2n ~ n +(2 ―1) (2) 定点表示的优缺点: 优点:运算简单,速度快,硬件较简单; 缺点:表数范围窄,运算精度低,使用不方便。 2. 浮点数表示:小数点的位置可以在一定范围内浮动。 浮点机:数是用浮点表示的计算机。 (1). 浮点数 N 的构成 N=RE ×M 在机器中的表示: 指数 E 尾数 M 式中:E 为阶,包括阶符和阶码(整数),阶码位数决定了浮点数的表数范围。 M 为尾数,包括数符和尾数,表示数的精度和正负。 【例 ±50 2.5】设数的表数范围为十进制数的±1.0×10 ,精度要求为 6 位十进制有 效数字,已知 lg2=0.301,基数 R=2,试设计出满足以上要求的最少字长二进制 位数的浮点数据格式。 【解】设阶码为 m 位,尾数为 n 位的规格化浮点数,其表数范围为:
由于尾数的最大值(1-2")在n足够大时可认为是1,故依要求,有22-≥1050, 两边取以10为底的对数,则2m-1≥350,所以m≥g(50 +1)÷l2≈74。取m=8, 另加一位阶符共9位 由于精度要求为6位十进制数的有效数字,则:2≤10-6 即n≥6≈199,取n=20, 另加一位数符,再考虑字长通常是8的整倍数,故尾数共为23位。 (2)规格化浮点数 ①什么叫规格化数? 尾数的最高位为非零数值的浮点数,即 .4MkI(R=2) 例:20×0.1011--规格化 2m×0.01011--非规格化 ②为什么要规格化? a.使一个数的浮点表示是惟一的 b.能保留最多的有效数字,避免丢失运算精度。 例:计算0.1101×0.0001的乘积 【解】:定点运算法:0.1101×0.0001-=0.00001101 取高位乘积:0.1101×00001=00000 浮点运算法:0.1101=2×0.1101,00001=2×0.1000 即:(2×0.1101)×(2×0.1000=2×001101000 左规 200×0.11010000 可见浮点运算精度高。 ③如何实现规格化? a若M≥1,则将尾数右移,每右移一位,阶码加1,称为向右规格化,简称右规 b若NF2,则将尾数左移,每左移一位,阶码减,称为向左规格化,简称左规 c.判断补码表示的尾数规格化的逻辑表达式为 N= M,MI+M,MI (2.10) 其中,Ms为数符,M1为补码尾数的最高位 可见,当N=1时,尾数为规格化尾数 小结: h规格化的过程,就是自动调节比例因子的过程 批注 b.尾数为零的浮点数不能规格化。 ④规格化浮点数的表数范围 ×2s|s2×(1-2")(21) 例:m=2,n=4
)21(2||2 1)1 12 n m m N −− − − 2 −×≤≤× − 2( − 21( 5012 ≥102 −m 由于尾数的最大值 ) 在 n 足够大时可认为是 1,故依要求,有 , −n 两边取以 10 为底的对数,则 2lg 50 1 ≥− m2 , 所以 4.72lg)1 2 ≈÷+ lg 50 ≥ lg( 6 10− ≤ −n m 。取 m=8, 另加一位阶符共 9 位。 由于精度要求为 6 位十进制数的有效数字,则:2 ,即 9.19 6 ≈≥ 2lg n ,取 n=20, 另加一位数符,再考虑字长通常是 8 的整倍数,故尾数共为 23 位。 (2)规格化浮点数 ① 什么叫规格化数? 尾数的最高位为非零数值的浮点数,即: 1|| 2 1 M <≤ (R=2) 例: 2011×0.1011 ---- 规格化 2100×0.01011 ---- 非规格化 ② 为什么要规格化? a.使一个数的浮点表示是惟一的 b.能保留最多的有效数字,避免丢失运算精度。 例:计算 0.1101×0.0001 的乘积 【解】:定点运算法:0.1101×0.0001=0.00001101 取高位乘积:0.1101×0.0001=0.0000 0 ×0.1101, 0.0001=2 浮点运算法:0.1101=2 -11×0.1000 即:(20 × -11 0.1101)×(2 ×0.1000)=2-11×0.01101000 左规 =2-100×0.11010000 可见浮点运算精度高。 ③ 如何实现规格化? a.若 |M|≥1 ,则将尾数右移,每右移一位,阶码加 1,称为向右规格化,简称右规。 b.若 |M|< 2 1 ,则将尾数左移,每左移一位,阶码减 1,称为向左规格化,简称左规。 c. 判断补码表示的尾数规格化的逻辑表达式为: N = s 1 + s MMMM 1 (2.10) 其中, Ms 为数符,M1 为补码尾数的最高位。 可见,当 N=1 时,尾数为规格化尾数 小结: a. 规格化的过程,就是自动调节比例因子的过程; b. 尾数为零的浮点数不能规格化。 批注 [M1]: ④ 规格化浮点数的表数范围: )21(222 1)12( 12 n m m N −−− − − −×≤≤× (2.11) 例:m=2,n=4,则