of 27
7/31/2019 Bai03 So Cham Dong
1/27
Bi 03: S chm ng
Phm Tun Sn
mailto:[email protected]:[email protected]7/31/2019 Bai03 So Cham Dong
2/27
Vn vi biu din s nguyn
S nguyn N bit biu din c 2N gi tr Biu din khng du (Unsigned Integer)
0 2N 1
(N=32, 2N1 = 4,294,967,295)
Biu din b 2-2(N-1) 2(N-1) 1
(N=32, 2(N-1) = 2,147,483,648)
Biu din s rt ln ? S giy / 1 nghn nm
31,556,926,000 (3.1556926 x 1010) Biu din s rt nh ? S giy / 1 nano giy
0.00000000110 (1.010 x 10-9)
Biu din s thp phn 1.5 ?2
7/31/2019 Bai03 So Cham Dong
3/27
Biu din phn thp phn
Biu din s 5.375 th no ?Cn bao nhiu bit ?
Gi s dng 8 bit lu tr phnnguyn
5 = 4 + 1 = 00000101 Tng t c th dng 8 bit lu tr
phn thp phn0.375 = 0.25 + 0.125 = 01100000
Vy c th biu din5.375 = 00000101.01100000
Tng qut ta c:
=> Biu din s chm tnh (fixed point) 3
0 1.0 1
1 0.5 1/2
2 0.25 1/4
3 0.125 1/8
4 0.0625 1/165 0.03125 1/32
6 0.015625 ...
7 0.0078125
8 0.00390625
9 0.001953125
10 0.000976562511 0.00048828125
12 0.000244140625
13 0.0001220703125
14 0.00006103515625
15 0.000030517578125
i 2-i
1 1 0 1 2. 2
n
i
n m i
i m
x x x x x x x =
= K K
7/31/2019 Bai03 So Cham Dong
4/27
7/31/2019 Bai03 So Cham Dong
5/27
S chm ng tng
H thp phn 123000000000 ~ 1.231011 v 0.0000000000123 ~ 1.2310-11
Tng t vi h nh phn, ta cx = 00000101.01100000 = 22 + 20 + 2-2 + 2-3
Ta c th vit lix = 1.01011 22
Thay v dng 16 bit lu tr, chcn dng 7 bit (5 bitphn tr + 2 bit phn m)
x = 1.01011 10
Nh vy, Mun tit kim s bit lu tr, ta di chuyn vtr ca du chm
sang phi 14 v tr
Cn lu: phn tr, phn m v phn du
=>y l tng c bn ca s chm ng (floating point)5
7/31/2019 Bai03 So Cham Dong
6/27
Biu din s chm ng
Biu din s chm ng
Sign (S): phn du
Exponent (E): phn s m
Significand (S): phn nh tr
Gi tr S2E
6
S Exponent Significand
1 bit m bits n bits
7/31/2019 Bai03 So Cham Dong
7/27
Biu din khoa hc
Gi tr 1 / 1,000,000,000 c th biu din nh sau: 1.010 10-9 Dng chun (Normalized form)
0.110 10-8, 10.010 10-10 Dng khng chun(Denormalized form)
Dng chun: phn nguyn gm 1 ch s khc 0
7
6.0210 x 1023
radix (base)
decimal point
mantissa exponent1.02 x 2
-1
binary point
7/31/2019 Bai03 So Cham Dong
8/27
Chun s chm ng IEEE 754
Biu din s chm ng Single Precision (32 bit)
S: du (Sign) 0: dng, 1: m
Exponent: phn s m (lu di dng s biased)
Significand: phn nh tr Ngm nh bt u l 1 + phn tr ~ (1 + 23) bits
Dng chun: +/-1.xxxx22yyyy
2 V d:
Biu din: 0 10000001 01011000000000000000000
C gi tr: +1.010110000210000001 ~ +(1+2-2 + 2-4 + 2-5) 22 =5.375
8
031S Exponent30 23 22
Significand
1 bit 8 bits 23 bits
7/31/2019 Bai03 So Cham Dong
9/27
Chuyn t biu din nh phnsang thp phn
9
Du: 0 dng
M: 0110 1000 c gi tr (dng biased) l
104 - 127 = -23
Tr:1 + 1x2-1+ 0x2-2 + 1x2-3 + 0x2-4 + 1x2-5 +...
=1+2-1+2-3 +2-5 +2-7 +2-9 +2-14 +2-15 +2-17 +2-22= 1.0 + 0.666115
Kt qu: 1.6661152-23 ~ 1.98610-7
(~ 2/10,000,000)
0 0110 1000 101 0101 0100 0011 0100 0010
7/31/2019 Bai03 So Cham Dong
10/27
Chuyn t biu din thp phnsang nh phn
-2.340625 x 101
1. Khng chun ha: -23.40625
2. Chuyn phn nguyn:
23 = 16 + 4 + 2 + 1 = 101113. Chuyn phn thp phn:
.40625 = .25 + .125 + .03125 = .01101
4. Kt hp v chun ha:
10111.01101 = 1.011101101 x 24
5. Chuyn phn m: 127 + 4 = 10000011
10
1 1000 0011 011 1011 0100 0000 0000 0000
7/31/2019 Bai03 So Cham Dong
11/27
Chuyn t biu din thp phnsang nh phn (tt)
1/3= 0.33333
= 0.25 + 0.0625 + 0.015625 + 0.00390625 +
= 1/4 + 1/16 + 1/64 + 1/256 +
= 2-2 + 2-4 + 2-6 + 2-8 + = 0.0101010101 * 20
= 1.0101010101 * 2-2
Du: 0
M
= -2 + 127 = 125 = 01111101 Tr = 0101010101
11
0 0111 1101 0101 0101 0101 0101 0101 010
7/31/2019 Bai03 So Cham Dong
12/27
Cc sc bit
Phn m = 0, phn tr = 0 S zero
Phn m = 0, phn tr 0
S dng khng chun (denormalized) Phn m ton bit 1, phn tr = 0
S v cng (infinity)
Phn m ton bit 1, phn tr 0 S bo li (NaN - Not a Number)
Signaling NaN
Quiet NaN12
7/31/2019 Bai03 So Cham Dong
13/27
7/31/2019 Bai03 So Cham Dong
14/27
Phn b, phm vi biu din
Phn b
14
Phm vi biu din. Chng minh ?
7/31/2019 Bai03 So Cham Dong
15/27
Phn b
t f(1,2) = s lng s chm ng trongkhong 1 v 2
t f(2,3) = s lng s chm ng trongkhong 2 v 3
Hi1. f(1,2) < f(2,3)
2. f(1,2) = f(2,3)
3. f(1,2) > f(2,3)
15
7/31/2019 Bai03 So Cham Dong
16/27
S dng khng chun
S dng nh nht c th biu dina = 1.0 2 2-126 = 2-126
L do: ngm nh 1 + phn tr
Gii php: Qui c nu s m = 0 (phn tr 0), khng ngm nh
bt u l 1 S dng khng chun (denormalized) S dng nh nht c th biu din
a = 0.0012 2-126 = 2-23 2-126 = 2-149
16
a0 +-
Gaps!
0
+-
7/31/2019 Bai03 So Cham Dong
17/27
Mt s loi chm ng
Single Precision (32 bit) 1/8/23 (kiu floattrong C), 10-38 1038
Double Precision (64 bit) 1/11/52 (kiu doubletrong C), 10-308 10308
Half Precision (16 bit) 1/5/10
Quad Precision (8 bit)
1/4/3 IEEE 754-2008 binary128 (128 bit)
1/15/112
17
en.wikipedia.org/wiki/Floating_point
7/31/2019 Bai03 So Cham Dong
18/27
Biu din s chm ng 8 bit
18
7/31/2019 Bai03 So Cham Dong
19/27
Single Precision (32 bit) Double Precision (64 bit)Du M Tr Gi t r Du M Tr Gi t r
+0 0 0 0 0 0 0 0 0
0 1 0 0 -0 1 0 0 -0
+ 0 255 (ton bit 1) 0 0 2047 (ton bit 1) 0
1 255 (ton bit 1) 0 - 1 2047 (ton bit 1) 0 -
Quiet NaN 0/ 1 255 (ton bit 1) 0 NaN 0/ 1 2047 (ton bit 1) 0 NaN
Signaling NaN 0/ 1 255 (ton bit 1) 0 NaN 0/ 1 2047 (ton bit 1) 0 NaN
Sdng(dng chun)
0 0
7/31/2019 Bai03 So Cham Dong
20/27
Khi nim Precision v Accuracy
Precision: s bit c s dng trong my tnh biu din 1 gi tr.
Accuracy: chnh xc m mt kiu biu dintrong my tnh c th biu din c mt gi tr.
Thng th precision cao s dn ti accuracycao.
V d: float pi = 3.14;
pi c biu din bi 24 bit phn tr (precise cao),nhng chc th biu din c gn ng pi (khngaccuracy).
20
7/31/2019 Bai03 So Cham Dong
21/27
Lm trn (Rounding)
Khi thc hin cc php ton trn s chm ng, kt qunhn c c th vt ra ngoi kh nng biu din caphn nh tr.
Phn cng phc v cc php ton trn s chm ng
thng c thm 2 bit nhh trcho phn nh tr gipthc hin vic lm trn c c kt qu chnh xcnht c th.
V d: thc hin (1.000021) (1.111120)
21
1.00.00 21
- 0.111.1 21 (= 1.11.1120)0.000..01 21
=1.0000 2-22
1.00.00 00 21
- 0.111.1 10 21 (= 1.11.1120)0.000..00 10 21
=1.0000 00 2-23
7/31/2019 Bai03 So Cham Dong
22/27
Chun IEEE lm trns chm ng
Lm trn ln (Round up / Round towards +)1.01 10 1.10 , -1.01 10 -1.01
Lm trn xung (Round down / Round towards )1.01 10 1.01, -1.01 10 -1.10
Lm trn v 0 (Truncate / Round towards 0) B gi tr 2 bit nh
Lm trn v gi tr gn nht (Round to nearest): 1.01 01 1.01 , -1.01 11 -1.10
Trng hp 2 bit nh l 10 (halfway) ? Lm trn v s chn gn nht (mc nh), ngha l LSB ca phnnh tr lun bng 01.01 10 1.10 , -1.10 11 -1.10
22
7/31/2019 Bai03 So Cham Dong
23/27
Cc trng hp lm trn khc
Lm trn cng c thc hin khi thc hin chuyn i: Chuyn i t kiu double precision thnh single precision
Chuyn i t s chm ng thnh s nguyn v ngc li
p kiu t s chm ng thnh s nguyn v ngc li
Hy kho st cc trng hp sau:
23
1.Chuyn i float -> int -> float.Kt qu nh ban u ?2.Chuyn i int -> float -> int. Kt qu nh ban u ?3.Php cng s chm ng c tnh kt hp ?
(x+y)+z = x+(y+z)
4.i = (int) (3.14159 * f);
5.f = f + (float) i;
6.if (i == (int)((float) i)) { printf(true); }
7.if (i == (int)((double) i)) { printf(true); }
8.if (f == (float)((int) f)) { printf(true); }
9.if (f == (double)((int) f)) { printf(true); }
7/31/2019 Bai03 So Cham Dong
24/27
Php cng, tr s chm ng
24
7/31/2019 Bai03 So Cham Dong
25/27
Php nhn s chm ng
25
7/31/2019 Bai03 So Cham Dong
26/27
Php chia s chm ng
26
7/31/2019 Bai03 So Cham Dong
27/27
Tham kho
Chng 3, P&H Chng 9, William Stallings
27