补码的补充说明:
数学上,补码与其真值构成了以某一值
(计算机的字长)为模的“模数系统”或“同余”结构的代数系统。
模:计量器的容量。
例:计算机的字长为 L,模数为 2L。
丢弃
1 0 0 1 8
+ 1 0 0 0 9
1 0 0 0 1 17
在模 16的系统中,17=1 ( mod16)。
同余:在某一模数系统中,模数为 n,如果 a,b的余数相同,则称 a,b模 n同余。
补码的应用:
例:钟表为模 12的系统。
12
39
6
●?

顺时针,+;逆时针,-由 12点拨到 3点:
1) 12+3=15=15-12=3( mod12)
2) 12-9=3
12+( 12-9) =3( mod12)
在模 n的系统中,N与 n-N是一对互补的数,
利用其特点可把减法变成加法运算。
[N]补 =2n+N -2n-1 N < 0? 取反加 1
则,12-9=12+3=3
1.3.6 十进制的补数为方便十进制减法运算而引进十进制的补数。
一、对 10的补数对于十进制正数 N,其对 10的补数表现形式为:
符号位为 0,数值部分为 N本身。
例,N=5493 [N]10补 =05493
例,N=-3250 [N]10补 =105-3250=96750
例,N=-0.3267 [N]10补 =10-0.3267=9.6733
对于十进制负数 N,其对 10的补数表现形式为:
[N]10补 =10n+ 1+N -10n-1 <n<0
( n为 N的整数部分的位数,n+ 1含一位符号位。 )
负数符号位为
9
对 10的补数减法运算举例:
例 1,N1=72532,N2=33256,求,N1-N2
[N1-N2]10补 =[72532-33256]10补
=[72532]10补 +[-33256]10补
=072532+966744
0 7 2 5 3 2
+) 9 6 6 7 4 4
1 0 3 9 2 7 6丢掉
[N1-N2]10补 = 039276
N1-N2= 39276
位数 n= 5
10n+ 1= 1000000
1000000- 33256
= 96674
对 10的补数减法运算举例(续):
例 2,N1=72532,N2=33256,求,N2-N1
[N2-N1]10补 =[33256 - 72532]10补
= [33256]10补 +[- 72532]10补
=33256 +927468
0 3 3 2 5 6
+) 9 2 7 4 6 8
9 6 0 7 2 4
[N2-N1]10补 = 960724
N2-N1= - (1000000- 960724)=- 39276
位数 n= 5
10n+ 1= 1000000
1000000- 72532
= 927468
负数符号位为
9
二、对 9的补数对于十进制正数 N,其对 9的补数表现形式为:
符号位为 0,数制部分为 N本身,与对 10的补数相同。
例,N=8954 [N]9补 =08954
对于十进制负数 N,其对 9的补数表现形式为:
[N]9补 =10n+ 1-10-m+N -10n-1<n<0
( n为 N的整数部分的位数,n+ 1含一位符号位,
M为 N的小数部分的位数。 )
例,N = -3250 [N]9补 =105-1-3250=96749
例,N = -25,639 [N]9补 =103-10-3-25.639=974.360
m= 0
10m=
1
负数符号位为
9
对 9的补数减法运算举例:
例 1,N1=5489,N2=3250,求,N=N1-N2
[N1-N2]9补 =[5489-3250]9补
=[5489]9补 +[-3250]9补
=05489+96749
0 5 4 8 9
+) 9 6 7 4 9
1 0 2 2 3 8
[N1-N2]9补 = 02239 N1-N2= 2239
+) 1
0 2 2 3 9
位数 n= 4,m= 0
10n+ 1= 100000
105- 1- 3250
= 96749
对 9的补数减法运算举例(续):
例 2,N1=5489,N2=3250,求,N=N2-N1
[N2-N1]9补 =[3250 - 5489]9补
= [3250]9补 +[- 5489]9补
=03250+94510
0 3 2 5 0
+) 9 4 5 1 0
9 7 7 6 0
[N2-N1]9补 = 97760 N
2-N1= - (105- 1- 97760 )
=- 2239
位数 n= 4,m= 0
10n+ 1= 100000
105- 1- 5489
= 94510
1.4 数的定点表示与浮点表示
1.4.1 数的定点表示即小数点的位置固定不变,一般可固定在任何位置,但通常固定在数值部份的最高位之前或最低之后,前者表示纯小数,后者表示纯整数。但机器中并没有小数点,仅仅是一种默认。
1 1 1 0 1 1 0 1
符号
小数点
n位数值
1 1 1 0 1 1 0 1
符号
小数点
n位数值
12||1 21||2 nnn NN
如果运算结果小于 2-n(或 1),称出现了 "下溢 ",
一般作为 0处理,结果大于 1- 2-n(或 2n-1),称出现了 "上溢 ",一般会停机或进入出错处理程序。
1.4.2 数的浮点表示定点数的数域较小。若既要能表示很小的数,又要能表示很大的数,则采用浮点表示法比较合适。
一般形式为,N=2J?S
其中 2J称为 N的指数部分,表示小数点的位置,
S为 N的尾数部分,表示数的符号和有效数字。
规格化数:尾数最高数值位非 0,.1||21 S即规格化数可以提高运算精度。例如:
0 1 0 1 1.021 0 1 1.021 0 1 1 1 0 11 0 0
如果尾数的数值部分只有 4位,则后一种表示将产生误差。
01010010
阶符阶码 尾符 尾数例:
机器零:浮点数的尾数为零或阶码为最小数
上溢:数的阶码大于机器所能表示的最大阶码
下溢:数的阶码小于机器所能表示的最小阶码
N=210 0.1010
浮点数的运算:
11 12 SN J 22
22 SN J
)(2 2121 1 SSNN J
1)加减法:
若 J1 =J2
若 J1 < >J2 则需要先对阶再按上式进行计算例,N1=211*0.1011 N2=201*0.1100
对阶:使 J1=J2=11 则N 2=211*0.0011
)0 0 1 1.01 0 1 1.0(2 1121 NN2)乘除法:
)( 21)(21 21 SSRNN JJ
)( 21)(21 21 SSRNN JJ