第六章 计算机的运算方法
6.1 无符号数和有符号数
6.3 定点运算
6.2 数的定点表示和浮点表示
6.4 浮点四则运算
6.5 算术逻辑单元例 6.11
00000000
00000001
00000010…
01111111
10000000
10000001
11111101
11111110
11111111

128
129
-0
-1
-128
-127
-127
-126
二进制代码 无符号数对应的真值 原码对应 的真值 补码对应 的真值 反码对应 的真值
01
2
127

253254
255

-125
-126
-127

-3
-2
-1

-2
-1
-0

+0
+1
+2
+127

+0
+1
+2
+127

+0
+1
+2
+127

6.1设机器数字长为 8 位(其中一位为符号位)
对于整数,当其分别代表无符号数、原码、补码和反码时,对应的真值范围各为多少?
例 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,移码表示法补码表示很难直接判断其真值大小如 十进制
x = +21
x = –21
x = +31
x = –31
x + 25
+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) 移码定义
x 为真值,n 为 整数的位数移码在数轴上的表示
[x]移码
2n+1–12n
2n–1–2n 0
0
真值如 x = 10100
[x]移 = 25 + 10100
用 逗号 将符号位和数值位隔开x = –10100
[x]移 = 25 – 10100
[x]移 = 2n + x( 2n> x ≥ 2n)
= 1,10100
= 0,01100
6.1
(2) 移码和补码的比较设 x = +1100100
[x]移 = 27 + 1100100
[x]补 = 0,1100100
设 x = –1100100
[x]移 = 27 – 1100100
[x]补 = 1,0011100
补码与移码只差一个符号位
= 1,1100100
= 0,0011100
6.1
- 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
±
6.1
当 x = 0 时 [+0]移 = 25 + 0
[– 0]移 = 25 – 0
∴ [+0]移 = [– 0]移
当 n = 5 时 最小的真值为 –25
[– 100000]移可见,最小真值的移码为全 0
(4) 移码的特点用移码表示浮点数的阶码能方便地判断浮点数的阶码大小
= 1,00000
= 1,00000
= – 100000
= 000000= 25–100000
6.1