第六章计算机的运算方法 61无符号数和有符号数 62数的定点表示和浮点表示 6.3定点运算 64浮点四则运算 65算术逻辑单元
第六章 计算机的运算方法 6.1 无符号数和有符号数 6.3 定点运算 6.2 数的定点表示和浮点表示 6.4 浮点四则运算 6.5 算术逻辑单元
例61设机器数字长为8位(其中一位为符号位61 对于整数,当其分别代表无符号数、原码、补码和 反码时,对应的真值范围各为多少? 无符号数原码对应补码对应反码对应 二进制代码对应的真值 的真值 的真值 的真值 00000000 0 +0 00000001 +1 +1 +1 00000010 2 +2 +2 +2 0111111l 127 +127 +127 +127 10000000 128 128 127 10000001 29 127 -126 11111101 53 -125 2 111110 126 111111l 55 127 321 0
例6.11 00000000 00000001 00000010 … 01111111 10000000 10000001 11111101 11111110 11111111 … 128 129 -0 -1 -128 -127 -127 -126 二进制代码 无符号数 对应的真值 原码对应 的真值 补码对应 的真值 反码对应 的真值 0 1 2 127 … 253 254 255 … -125 -126 -127 … -3 -2 -1 … -2 -1 -0 … +0 +1 +2 +127 … +0 +1 +2 +127 … +0 +1 +2 +127 … 6.1 +0 设机器数字长为8 位(其中一位为符号位) 对于整数,当其分别代表无符号数、原码、补码和 反码时,对应的真值范围各为多少?
例612已知叫补求[y补 61 解:设U补=ny1n2…yn 四=0.y丿2:yn Ⅳy连同符号位在内,每位取反,末位加1 即得[y补 I-yl林=1y2…yn+2”1 Ⅱ>D=1.yy… Ly补连同符号位在内,每位取反,末位加1 即得[y补 I-yl补=0.y1乃2…y+2
例6.12 解: 已知 [y]补 求[ y]补 [y]补 = 0. y1 y2 … yn y = 0. y1 y2 …yn y = 0. y1 y2 …yn [ y]补 = 1.y1 y2 yn + 2 … -n [y]补 = 1. y1 y2 … yn [ y]原 = 1.y1 y2 yn + 2 … -n y = (0. y1 y2 yn + 2 … -n) y = 0. y1 y2 yn + 2 … -n [ y]补 = 0. y1 y2 …yn + 2-n 设 [y]补 = y0 . y1 y2 …yn 6.1 每位取反, 即得[ y]补 [y]补连同符号位在内, 末位加 1 每位取反, 即得[ y]补 [y]补连同符号位在内, 末位加 1
5.移码表示法 61 补码表示很难直接判断其真值大小 如十进制 二进制 补码 x=+21 +10101 0,101016错 y=-21 10101 1,0101大 x=+31 +11111 0,1错 y=-31 -11111 1,00001d大 5 x+2 +10101+100000=110101。大 正确 10101+100000=001011 +1111100000=l1l1大 正确 11111+100000=000001
5. 移码表示法 补码表示很难直接判断其真值大小 如 十进制 x = +21 x = –21 x = +31 x = –31 x + 2 5 +10101 + 100000 +11111 + 100000 10101 + 100000 11111 + 100000 大 大 错 错 大 大 正确 正确 0,10101 1,01011 0,11111 1,00001 +10101 –10101 +11111 –11111 = 110101 = 001011 = 111111 = 000001 二进制 补码 6.1
(1)移码定义 61 xl移=2"+x(2>x≥2") x为真值,n为整数的位数 移码在数轴上的表示 0 移码 真值 如x=10100 xl移=2+10100=1,10100 用逗号将符号位 x=-10100 和数值位隔开 x】移=2-10100=0,01100
(1) 移码定义 x 为真值,n 为 整数的位数 移码在数轴上的表示 [x]移码 2 n+1 2 –1 n 2 n –2 –1 n 0 0 真值 如 x = 10100 [x]移 = 25 + 10100 用 逗号 将符号位 x = –10100 和数值位隔开 [x]移 = 25 – 10100 [x]移 = 2n + x(2 n>x ≥ 2 n) = 1,10100 = 0,01100 6.1
(2)移码和补码的比较 61 设x=+1100100 x移=27+10010=1,100100 x]补=0,1100100 设x=-1100100 x]移=27-1100100=0,001100 x]=1,001100 补码与移码只差一个符号位
(2) 移码和补码的比较 设 x = +1100100 [x]移 = 27 + 1100100 [x]补 = 0,1100100 设 x = –1100100 [x]移 = 27 – 1100100 [x]补 = 1,0011100 补码与移码只差一个符号位 = 1,1100100 = 0,0011100 1 0 0 1 6.1
(3)真值、补码和移码的对照表61 真值x(n=5)xl Ix移对应的 移 十进制整数 100000 100000 000000 0 11111100001 000001 11110 100010 000010 00001 111111 011111 31 ±00000 000000 100000 32 +00001 000001 100001 33 +00010 000010 100010 34 11110 011110 11110 62 +11111 011111 l1111 63
- 1 0 0 0 0 0 - 1 1 1 1 1 - 1 1 1 1 0 - 0 0 0 0 1 ± 0 0 0 0 0 + 0 0 0 0 1 + 0 0 0 1 0 + 1 1 1 1 0 + 1 1 1 1 1 … … 真值 x ( n=5 ) [x]补 [x]移 [x] 移对应的 十进制整数 (3) 真值、补码和移码的对照表 … … 0 1 2 31 32 33 34 62 63 … … 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 … … 0 1 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 0 1 0 0 0 0 1 - 1 0 0 0 0 0 1 0 0 0 0 0 ± 0 0 0 0 0 + 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 6.1
(4)移码的特点 61 >当x=0时|+0移=25+0=1,0000 01移=25-0=1,0000 +0移=[0移 当n=5时最小的真值为-25=-100000 -1000001移=2-100000 可见,最小真值的移码为全0 用移码表示浮点数的阶码 能方便地判断浮点数的阶码大小
➢ 当 x = 0 时 [+0]移 = 25 + 0 [– 0]移 = 25 – 0 ∴ [+0]移 = [– 0]移 ➢ 当 n = 5 时 最小的真值为 –2 5 [– 100000]移 可见,最小真值的移码为全 0 (4) 移码的特点 用移码表示浮点数的阶码 能方便地判断浮点数的阶码大小 = 1,00000 = 1,00000 = – 100000 = 2 = 000000 5 –100000 6.1