Tải bản đầy đủ (.pdf) (23 trang)

03 bieu dien so thuc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (563.19 KB, 23 trang )

1

HỆ THỐNG MÁY TÍNH
03 – Biểu diễn số thực


t vn
2
ă

Biu din s 123.37510 sang h nh phõn?

ă

í tưởng đơn giản: Biểu diễn phần nguyên và phần thập phõn riờng l
Ô

Vi phn nguyờn: Dựng 8 bit ([010, 25510])
12310 = 64 + 32 + 16 + 8 + 2 + 1 = 0111 10112

Ô

Vi phn thp phõn: Tng t dùng 8 bit
0.375 = 0.25 + 0.125 = 2-2 + 2-3 = 0110 00002



123.37510 = 0111 1011.0110 00002

ă


Tng quỏt cụng thức khai triển của số thập phân hệ nhị phân:

xn -1 xn - 2 ... x0 .x-1 x- 2 ... x- m = xn -1.2 n -1 + xn - 2 .2 n - 2... + x0 .20 + x-1.2 -1 + x- 2 .2 -2 + ... + x- m 2 - m


t vn
3

ă

Tuy nhiờnvi 8 bit:
Ô

Phn nguyờn ln nht cú th biu din: 255

Ô

Phn thp phõn nh nht cú th biểu diễn: 2-8 ~ 10-3 = 0.001

à

Biểu diễn số nhỏ như 0.0001 (10-4) hay 0.000001 (10-5)?

à

Một giải pháp: Tăng số bit phn thp phõn



Ô


Vi 16 bit cho phn thp phõn: min = 2-16 ~ 10-5

Ô

Cú v khụng hiu quCỏch tt hơn ?

Floating Point Number (Số thực dấu chấm động)


Floating Point Number ?
4
ă

Gi s ta cú s ( dng nhị phân)
X = 0.00000000000000112 = (2-15 + 2-16)10
14 số 0

à

X = 0.112 * (2-14)10 (= (2-1 + 2-2).2-14 = 2-15 + 2-16)

à

Thay vì dùng 16 bit để lưu trữ phần thập phân, ta có thể chỉ cần 6 bit:
X = 0.11 1110

à

Cách làm: Di chuyển vị trí dấu chấm sang phải 14 vị trí, dùng 4 bit để lưu

trữ số 14 này

à

Đây là ý tưởng cơ bản của số thực dấu chấm động (floating point number)


Chun húa s thp phõn
5

ă

Trc khi cỏc s c biu diễn dưới dạng số chấm
động, chúng cần được chuẩn hóa v dng: 1.F * 2E

ă

Ô

F: Phn thp phõn khụng du (nh tr - Significant)

Ô

E: Phn s m (Exponent)

Vớ d:
Ô

+0.0937510 = 0.000112 = +1.1 * 2-4


Ô

-5.2510

= 101.012 = -1.0101 * 22


Biu din s chm ng
6

ă

Cú nhiu chun nhng hin nay chuẩn IEEE 754 được
dùng nhiều nhất để lưu trữ số thập phân theo dấu chấm
động trong máy tính, gồm 2 dạng:
(slide sau)


Biu din s chm ng
7
ă

S chm ng chớnh xỏc n (32 bits):

Sign

Exponent (biased)

1 bit
ă


Significand

8 bits

23 bits

S chm ng chớnh xỏc kộp (64 bits):

Sign

Exponent (biased)

1 bit

Significand

11 bits

52 bits

ă

Sign: Bit du (1: S õm, 0: S dng)

ă

Exponent: S m (Biu din di dng s quỏ K (Biased) vi

ă


Ô

Chớnh xỏc n: K = 127 (2n-1 - 1 = 28-1 - 1) với n l s bit lu tr Exponent

Ô

Chớnh xỏc kộp: K = 1023 (2n-1 - 1 = 211-1 - 1)

Significand (Fraction): Phần định trị (phần lẻ sau dấu chấm)


Vớ d
8
ă

Biu din s thc sau theo dng s chm ng chớnh xỏc n (32 bit): X = -5.25

ă

Bc 1: i X sang h nh phõn
X = -5.2510 = -101.012

ă

Bc 2: Chuẩn hóa theo dạng ±1.F * 2E
X = -5.25 = -101.01 = -1.0101 * 22

ă


Bc 3: Biu din Floating Point
Ô

S õm: bit du Sign = 1

Ô

S m E = 2 à Phần mũ exponent với số thừa K=127 được biểu diễn:
à Exponent = E + 127 = 2 + 127 = 12910 = 1000 00012

Ô

Phn nh tr = 0101 0000 0000 0000 0000 000 (Thêm 19 số 0 cho đủ 23 bit)

à Kết quả nhận được: 1 1000 0001 0101 0000 0000 0000 0000 000


Tho lun v exponent
9

ă

Vỡ sao phn s m exponent khụng giữ nguyên lại phải lưu trữ
dưới dạng số quá K (Dng biased)?

ă

Gi s trong s chm ng chớnh xỏc n (32 bits), ta dùng 8
bits để lưu giá trị exponent (biểu diễn dưới dạng số quá K),
vậy miền giá trị của nó là [0, 255]


à

Với K = 127, số mũ gốc ban đầu có miền giá trị [-127, 128]

à

Miền giá trị này khá vô lý, vậy tại sao chúng ta không chọn
số K = 128 để miền giá trị gốc là [-128, 127] như bình
thường?


Cõu hi 1 - ỏp ỏn
10

ă

S d Exponent c lu trữ dưới dạng Biased vì
ta muốn chuyển từ miền giá trị số có dấu sang
số khơng dấu (vì trong biased, số k được chọn
để sau khi cộng số bất kỳ trong miền giá trị gốc,
kết quả là số luôn dương)

à Dễ dàng so sánh, tính tốn


Cõu hi 2 - ỏp ỏn
11

ă


S K c chn l 127 mà khơng phải là 128 vì tại bước 2
trước khi biểu diễn thành số chấm động, chúng ta cần
phải chun húa thnh dng 1.F * 2E

ă

Tc l chỳng ta sẽ ln ln để dành 1 bit (số 1) phía
trước dấu chấm chứ không đẩy sang trái hết

à Với 8 bit, số mũ gốc ban đầu không thể đạt mức nhỏ
nhất là -128 mà chỉ là -127
à Do vậy ta chỉ cần chọn K = 127 là được


Vy thỡ
12

ă

Khi mun biu din s 0 thỡ ta khụng thể tìm ra bit trái
nhất có giá trị = 1 để đẩy dấu chấm động, vậy làm sao
chuẩn hóa về dng 1.F * 2E ?

ă

Vi s dng 0.F * 2-127 thỡ chun húa c na khụng?

ă


Vi K = 127, exponent lớn nhất sẽ là 255

à Số mũ gốc ban đầu lớn nhất là 255 – 127 = +128
à Vô lý vì với 8 bit có dấu ta khơng thể biểu diễn được số
+128 ?


Tr li
13

ă

Vỡ ú l nhng s thc c bit, ta không thể
biểu diễn bằng dấu chấm động J


S thc c bit
14

ă

S 0 (zero)
Ô

ă

S khụng th chun húa (denormalized)
Ô

ă


Exponent = 0, Significand != 0

S vụ cựng (infinity)
Ô

ă

Exponent = 0, Significand = 0

Exponent = 111…1 (toàn bit 1), Significand = 0

S bỏo li (NaN Not a Number)
Ô

Exponent = 111…1 (toàn bit 1), Significand != 0


Normalized number
15
ă

ă

ă

Largest positive normalized number: +1.[23 s 1] * 2127
S

Exp


Significand (Fraction)

-

------------

---------------------------------------

0

1111 1110

1111 1111 1111 1111 1111 111

Smallest positive normalized number: +1.[23 số 0] * 2-126
S

Exp

Significand (Fraction)

-

------------

---------------------------------------

0


0000 0001

0000 0000 0000 0000 0000 000

Tương tự cho số negative (số âm)


Denormalized number
16
ă

Largest positive denormalized number: +0.[23 s 1] * 2-127
S
Exp
Significand (Fraction)
-------------------------------------------------0
0000 0000
1111 1111 1111 1111 1111 111
Tuy nhiên IEEE 754 quy định là +0.[23 số 1] * 2-126 vì muốn tiến gần hơn
với “Smallest positive normalized number = +1.[23 số 0] * 2-126

ă

Smallest positive denormalized number: +1.[22 s 0]1 * 2-127
S
Exp
Significand (Fraction)
-------------------------------------------------0
0000 0000
0000 0000 0000 0000 0000 001

Tuy nhiên IEEE 754 quy nh l +0.[22 s 0]1 * 2-126

ă

Tng t cho số negative (số âm)


Ví dụ: n = 4, m = 3, bias = 7
17


Phân bố các số thực (32 bits)
18


Chuẩn IEEE 754
19


Bi tp 1
20
ă

Biu din s thc sau theo dng s chm ng chớnh xỏc n (32 bit): X = +12.625

ă

Bc 1: Đổi X sang hệ nhị phân
X = -12.62510 = -1100.1012


ă

Bc 2: Chun húa theo dng 1.F * 2E
X = -12.62510 = -1100.1012 = -1.100101 * 23

ă

Bc 3: Biu din Floating Point
Ô

S dng: bit du Sign = 0

Ô

S m E = 3 à Phần mũ exponent với số thừa K=127 được biểu diễn:
à Exponent = E + 127 = 3 + 127 = 13010 = 1000 00102

Ô

Phn nh tr = 1001 0100 0000 0000 0000 000 (Thêm 17 số 0 cho đủ 23 bit)

à Kết quả nhận được: 0 1000 0010 1001 0100 0000 0000 0000 000



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×