SlideShare une entreprise Scribd logo
1  sur  27
Bài 03: Số chấm động
Phạm Tuấn Sơn
ptson@fit.hcmus.edu.vn
Vấn đề với biểu diễn số nguyên
• Số nguyên N bit biểu diễn được 2N giá trị
– Biểu diễn không dấu (Unsigned Integer)
0 à 2N – 1
(N=32, 2N–1 = 4,294,967,295)
– Biểu diễn bù 2
-2(N-1) à 2(N-1) – 1
(N=32, 2(N-1) = 2,147,483,648)
• Biểu diễn số rất lớn ? Số giây / 1 nghìn năm
– 31,556,926,000 (3.1556926 x 1010)
• Biểu diển số rất nhỏ ? Số giây / 1 nano giây
– 0.00000000110 (1.010 x 10-9)
• Biểu diễn số thập phân 1.5 ?
2
Biểu diễn phần thập phân
• Biểu diễn số 5.375 thế nào ?
Cần bao nhiêu bit ?
• Giả sử dùng 8 bit để lưu trữ phần
nguyên
5 = 4 + 1 = 00000101
• Tương tự có thể dùng 8 bit lưu trữ
phần thập phân
0.375 = 0.25 + 0.125 = 01100000
• Vậy có thể biểu diễn
5.375 = 00000101.01100000
• Tổng quát ta có:
=> Biểu diển số chấm tĩnh (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/16
5 0.03125 1/32
6 0.015625 ...
7 0.0078125
8 0.00390625
9 0.001953125
10 0.0009765625
11 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
Giới hạn biểu diễn số chấm tĩnh
• Với 8 bit
– Phần nguyên lớn nhất có thể biểu diễn là
28 - 1= 255
– Phần thập phân nhỏ nhất có thể biểu diễn là
2-8 = 1/256 = 0.00390625 ~ 10-3
• Nếu muốn tính toán với số nhỏ hơn như
0.000110 hay 0.0000110 ?
à Tăng số bit
Với 16 bit phần thập phân
min = 1/65536 = 0.0000152587890625 ~ 10-5
• Có cách nào tốt hơn ?
4
Số chấm động – Ý tưởng
• Hệ thập phân
– 123000000000 ~ 1.23×1011 và 0.0000000000123 ~ 1.23×10-11
• Tương tự với hệ nhị phân, ta có
x = 00000101.01100000 = 22 + 20 + 2-2 + 2-3
• Ta có thể viết lại
x = 1.01011 × 22
• Thay vì dùng 16 bit để lưu trữ, chỉ cần dùng 7 bit (5 bit
phần trị + 2 bit phần mũ)
x = 1.01011 10
• Như vậy,
– Muốn tiết kiệm số bit lưu trữ, ta đã di chuyển vị trí của dấu chấm
sang phải 14 vị trí
– Cần lưu: phần trị, phần mũ và …phần dấu
=> Đây là ý tưởng cơ bản của số chấm động (floating point) 5
Biểu diễn số chấm động
• Biểu diễn số chấm động
– Sign (S): phần dấu
– Exponent (E): phần số mũ
– Significand (S): phần định trị
• Giá trị
±S×2E
6
S Exponent Significand
1 bit m bits n bits
Biểu diễn khoa học
• Giá trị 1 / 1,000,000,000 có thể biểu diễn như sau:
– 1.010 × 10-9 à Dạng chuẩn (Normalized form)
– 0.110 × 10-8, 10.010 × 10-10 à Dạng không chuẩn
(Denormalized form)
• Dạng chuẩn: phần nguyên gồm 1 chữ số khác 0
7
6.0210 x 1023
radix (base)
decimal point
mantissa exponent
1.02 x 2-1
“binary point”
Chuẩn số chấm động IEEE 754
• Biểu diễn số chấm động Single Precision (32 bit)
– S: dấu (Sign) – 0: dương, 1: âm
– Exponent: phần số mũ (lưu dưới dạng số biased)
– Significand: phần định trị
• Ngầm định bắt đầu là 1 + phần trị ~ (1 + 23) bits
• Dạng chuẩn: +/-1.xxx…x2×2yyy…y2
• Ví dụ:
Biểu diễn: 0 10000001 01011000000000000000000
Có giá trị: +1.0101100…00×210000001 ~ +(1+2-2 + 2-4 + 2-5) ×22 =
5.375
8
031
S Exponent
30 23 22
Significand
1 bit 8 bits 23 bits
Chuyển từ biểu diễn nhị phân
sang thập phân
9
• Dấu: 0 à dương
• Mũ:
– 0110 1000 có giá trị (dạng 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
• Kết quả: 1.666115×2-23 ~ 1.986×10-7
(~ 2/10,000,000)
0 0110 1000 101 0101 0100 0011 0100 0010
Chuyển từ biểu diễn thập phân
sang nhị phân
-2.340625 x 101
1. Không chuẩn hóa: -23.40625
2. Chuyển phần nguyên:
23 = 16 + 4 + 2 + 1 = 10111
3. Chuyển phần thập phân:
.40625 = .25 + .125 + .03125 = .01101
4. Kết hợp và chuẩn hóa:
10111.01101 = 1.011101101 x 24
5. Chuyển phần mũ: 127 + 4 = 10000011
10
1 1000 0011 011 1011 0100 0000 0000 0000
Chuyển từ biểu diễn thập phân
sang nhị phân (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
– Dấu: 0
– Mũ = -2 + 127 = 125 = 01111101
– Trị = 0101010101…
11
0 0111 1101 0101 0101 0101 0101 0101 010
Các số đặc biệt
• Phần mũ = 0, phần trị = 0
– Số zero
• Phần mũ = 0, phần trị ≠ 0
– Số dạng không chuẩn (denormalized)
• Phần mũ toàn bit 1, phần trị = 0
– Số vô cùng (infinity)
• Phần mũ toàn bit 1, phần trị ≠ 0
– Số báo lỗi (NaN - Not a Number)
• Signaling NaN
• Quiet NaN
12
Những trường hợp tạo
số đặc biệt
1. X + (+∞)
2. X – (+∞)
3. X + (–∞)
4. X – (–∞)
5. X × (+∞)
6. X / (–∞)
7. (+∞) + (+∞)
8. (–∞) + (–∞)
9. (–∞) – (+∞)
10.(+∞) – (–∞)
13
11.(+∞) + (–∞)
12.(–∞) + (+∞)
13.(+∞) – (+∞)
14.(–∞) – (–∞)
15.∞ × 0
16.∞ / 0
17.X / 0
18.0 / 0
19.∞ / ∞
20.sqrt(X), X<0
21.…………..
Phân bố, phạm vi biểu diễn
• Phân bố
14
• Phạm vi biểu diễn. Chứng minh ?
Phân bố
• Đặt f(1,2) = số lượng số chấm động trong
khoảng 1 và 2
• Đặt f(2,3) = số lượng số chấm động trong
khoảng 2 và 3
• Hỏi
1. f(1,2) < f(2,3)
2. f(1,2) = f(2,3)
3. f(1,2) > f(2,3)
15
Số dạng không chuẩn
• Số dương nhỏ nhất có thể biểu diễn
a = 1.0… 2 × 2-126 = 2-126
Lý do: ngầm định 1 + phần trị
• Giải pháp:
– Qui ước nếu số mũ = 0 (phần trị ≠ 0), không ngầm định
bắt đầu là 1 à Số dạng không chuẩn (denormalized)
– Số dương nhỏ nhất có thể biểu diễn
• a = 0.00…12 × 2-126 = 2-23 × 2-126 = 2-149
16
a0
+-
Gaps!
0
+-
Một số loại chấm động
• Single Precision (32 bit)
– 1/8/23 (kiểu float trong C), 10-38 à 1038
• Double Precision (64 bit)
– 1/11/52 (kiểu double trong 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
Biểu diễn số chấm động 8 bit
18
Single Precision (32 bit) Double Precision (64 bit)
Dấu Mũ Trị Giá trị Dấu Mũ Trị Giá trị
+0 0 0 0 0 0 0 0 0
– 0 1 0 0 -0 1 0 0 -0
+∞ 0 255 (toàn bit 1) 0 ∞ 0 2047 (toàn bit 1) 0 ∞
– ∞ 1 255 (toàn bit 1) 0 -∞ 1 2047 (toàn bit 1) 0 -∞
Quiet NaN 0/ 1 255 (toàn bit 1) ≠ 0 NaN 0/ 1 2047 (toàn bit 1) ≠ 0 NaN
Signaling NaN 0/ 1 255 (toàn bit 1) ≠ 0 NaN 0/ 1 2047 (toàn bit 1) ≠ 0 NaN
Số dương
(dạng chuẩn)
0 0<e<255 f 2e-127 (1.f) 0 0<e<2047 f 2e-1023 (1.f)
Số âm
(dạng chuẩn)
1 0<e<255 f -2e-127 (1.f) 1 0<e<2047 f -2e-1023 (1.f)
Số dương
(dạng không
chuẩn)
0 0 f ≠ 0 2e-126 (0.f) 0 0 f ≠ 0 2e-1022 (0.f)
Số âm (dạng
không chuẩn)
1 0 f ≠ 0 -2e-126 (0.f) 1 0 f ≠ 0 -2e-1022 (0.f)
Bảng tóm tắt số chấm động
19
Khái niệm Precision và Accuracy
• Precision: số bit được sử dụng trong máy tính
để biểu diễn 1 giá trị.
• Accuracy: độ chính xác mà một kiểu biểu diễn
trong máy tính có thể biểu diễn được một giá trị.
• Thường thì precision cao sẽ dẫn tới accuracy
cao.
• Ví dụ: float pi = 3.14;
– pi được biểu diễn bởi 24 bit phần trị (precise cao),
nhưng chỉ có thể biểu diễn được gần đúng pi (không
accuracy).
20
Làm tròn (Rounding)
• Khi thực hiện các phép toán trên số chấm động, kết quả
nhận được có thể vượt ra ngoài khả năng biểu diễn của
phần định trị.
• Phần cứng phục vụ các phép toán trên số chấm động
thường có thêm 2 bit nhớ hỗ trợ cho phần định trị giúp
thực hiện việc làm tròn để có được kết quả chính xác
nhất có thể.
• Ví dụ: thực hiện (1.00…00×21) – (1.11…11×20)
21
1.00….00 ×21
- 0.111….1 ×21 (= 1.11….11×20)
0.000..01 ×21
=1.00…00 ×2-22
1.00….00 00 ×21
- 0.111….1 10 ×21 (= 1.11….11×20)
0.000..00 10 ×21
=1.00…00 00 ×2-23
Chuẩn IEEE làm tròn
số chấm động
• Làm tròn lên (Round up / Round towards +∞)
1.01 10 → 1.10 , -1.01 10 → -1.01
• Làm tròn xuống (Round down / Round towards –∞)
1.01 10 → 1.01, -1.01 10 → -1.10
• Làm tròn về 0 (Truncate / Round towards 0)
– Bỏ giá trị 2 bit nhớ
• Làm tròn về giá trị gần nhất (Round to nearest):
– 1.01 01 → 1.01 , -1.01 11 → -1.10
– Trường hợp 2 bit nhớ là 10 (halfway) ?
• Làm tròn về số chẵn gần nhất (mặc định), nghĩa là LSB của phần
định trị luôn bằng 0
1.01 10 → 1.10 , -1.10 11 → -1.10
22
Các trường hợp làm tròn khác
• Làm tròn cũng được thực hiện khi thực hiện chuyển đổi:
– Chuyển đổi từ kiểu double precision thành single precision
– Chuyển đổi từ số chấm động thành số nguyên và ngược lại
– Ép kiểu từ số chấm động thành số nguyên và ngược lại
• Hãy khảo sát các trường hợp sau:
23
1.Chuyển đổi float -> int -> float.Kết quả như ban đầu ?
2.Chuyển đổi int -> float -> int. Kết quả như ban đầu ?
3.Phép cộng số chấm động có tính kết hợp ?
(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”); }
Phép cộng, trừ số chấm động
24
Phép nhân số chấm động
25
Phép chia số chấm động
26
Tham khảo
• Chương 3, P&H
• Chương 9, William Stallings
27

Contenu connexe

Tendances

Bo de toan roi rac (on thi cao hoc khmt)
Bo de toan roi rac (on thi cao hoc khmt)Bo de toan roi rac (on thi cao hoc khmt)
Bo de toan roi rac (on thi cao hoc khmt)lieu_lamlam
 
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngBáo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngHuyen Pham
 
Chuong 04 mach logic
Chuong 04 mach logicChuong 04 mach logic
Chuong 04 mach logicAnh Ngoc Phan
 
Toán rời rạc-Dành cho sinh viên,người thi cao học
Toán rời rạc-Dành cho sinh viên,người thi cao họcToán rời rạc-Dành cho sinh viên,người thi cao học
Toán rời rạc-Dành cho sinh viên,người thi cao họcducmanhkthd
 
Giáo trình thiết kế mạch logic số
Giáo trình thiết kế mạch logic sốGiáo trình thiết kế mạch logic số
Giáo trình thiết kế mạch logic sốMan_Ebook
 
Đại số boolean và mạch logic
Đại số boolean và mạch logicĐại số boolean và mạch logic
Đại số boolean và mạch logicwww. mientayvn.com
 
[Báo cáo] Bài tập lớn Xử lý tín hiệu số: Thiết kế bộ lọc FIR
[Báo cáo] Bài tập lớn Xử lý tín hiệu số: Thiết kế bộ lọc FIR[Báo cáo] Bài tập lớn Xử lý tín hiệu số: Thiết kế bộ lọc FIR
[Báo cáo] Bài tập lớn Xử lý tín hiệu số: Thiết kế bộ lọc FIRThe Nguyen Manh
 
Bài giảng kiến trúc máy tính
Bài giảng kiến trúc máy tínhBài giảng kiến trúc máy tính
Bài giảng kiến trúc máy tínhCao Toa
 
Xu lý tín hiệu số
Xu lý tín hiệu sốXu lý tín hiệu số
Xu lý tín hiệu sốHao Truong
 
xử lý số tín hiệu -Chuong 3
xử lý số tín hiệu -Chuong 3xử lý số tín hiệu -Chuong 3
xử lý số tín hiệu -Chuong 3Ngai Hoang Van
 
Tín Hiệu Và Hệ Thống - Biểu Diễn trong miền thời gian của hệ thống tuyến tính...
Tín Hiệu Và Hệ Thống - Biểu Diễn trong miền thời gian của hệ thống tuyến tính...Tín Hiệu Và Hệ Thống - Biểu Diễn trong miền thời gian của hệ thống tuyến tính...
Tín Hiệu Và Hệ Thống - Biểu Diễn trong miền thời gian của hệ thống tuyến tính...Quang Thinh Le
 
Bảng công thức tích phân + mũ lôga
Bảng công thức tích phân + mũ lôgaBảng công thức tích phân + mũ lôga
Bảng công thức tích phân + mũ lôgaPhương Thảo Nguyễn
 
Đề thi Kỹ thuật lập trình có lời giải
Đề thi Kỹ thuật lập trình có lời giảiĐề thi Kỹ thuật lập trình có lời giải
Đề thi Kỹ thuật lập trình có lời giảinataliej4
 
Chuong 4.1 tin hieu va pho
Chuong 4.1 tin hieu va phoChuong 4.1 tin hieu va pho
Chuong 4.1 tin hieu va phothanhyu
 

Tendances (20)

Bo de toan roi rac (on thi cao hoc khmt)
Bo de toan roi rac (on thi cao hoc khmt)Bo de toan roi rac (on thi cao hoc khmt)
Bo de toan roi rac (on thi cao hoc khmt)
 
Tichchap
TichchapTichchap
Tichchap
 
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngBáo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
 
Ktmt chuong 2
Ktmt chuong 2Ktmt chuong 2
Ktmt chuong 2
 
Chuong 04 mach logic
Chuong 04 mach logicChuong 04 mach logic
Chuong 04 mach logic
 
Toán rời rạc-Dành cho sinh viên,người thi cao học
Toán rời rạc-Dành cho sinh viên,người thi cao họcToán rời rạc-Dành cho sinh viên,người thi cao học
Toán rời rạc-Dành cho sinh viên,người thi cao học
 
Giáo trình thiết kế mạch logic số
Giáo trình thiết kế mạch logic sốGiáo trình thiết kế mạch logic số
Giáo trình thiết kế mạch logic số
 
Đại số boolean và mạch logic
Đại số boolean và mạch logicĐại số boolean và mạch logic
Đại số boolean và mạch logic
 
Lttt b11
Lttt b11Lttt b11
Lttt b11
 
[Báo cáo] Bài tập lớn Xử lý tín hiệu số: Thiết kế bộ lọc FIR
[Báo cáo] Bài tập lớn Xử lý tín hiệu số: Thiết kế bộ lọc FIR[Báo cáo] Bài tập lớn Xử lý tín hiệu số: Thiết kế bộ lọc FIR
[Báo cáo] Bài tập lớn Xử lý tín hiệu số: Thiết kế bộ lọc FIR
 
Bài giảng kiến trúc máy tính
Bài giảng kiến trúc máy tínhBài giảng kiến trúc máy tính
Bài giảng kiến trúc máy tính
 
Xu lý tín hiệu số
Xu lý tín hiệu sốXu lý tín hiệu số
Xu lý tín hiệu số
 
Hệ mật mã Elgamal
Hệ mật mã ElgamalHệ mật mã Elgamal
Hệ mật mã Elgamal
 
xử lý số tín hiệu -Chuong 3
xử lý số tín hiệu -Chuong 3xử lý số tín hiệu -Chuong 3
xử lý số tín hiệu -Chuong 3
 
Xử lý tín hiệu số
Xử lý tín hiệu sốXử lý tín hiệu số
Xử lý tín hiệu số
 
Tín Hiệu Và Hệ Thống - Biểu Diễn trong miền thời gian của hệ thống tuyến tính...
Tín Hiệu Và Hệ Thống - Biểu Diễn trong miền thời gian của hệ thống tuyến tính...Tín Hiệu Và Hệ Thống - Biểu Diễn trong miền thời gian của hệ thống tuyến tính...
Tín Hiệu Và Hệ Thống - Biểu Diễn trong miền thời gian của hệ thống tuyến tính...
 
Bảng công thức tích phân + mũ lôga
Bảng công thức tích phân + mũ lôgaBảng công thức tích phân + mũ lôga
Bảng công thức tích phân + mũ lôga
 
Hop ngu mips
Hop ngu mipsHop ngu mips
Hop ngu mips
 
Đề thi Kỹ thuật lập trình có lời giải
Đề thi Kỹ thuật lập trình có lời giảiĐề thi Kỹ thuật lập trình có lời giải
Đề thi Kỹ thuật lập trình có lời giải
 
Chuong 4.1 tin hieu va pho
Chuong 4.1 tin hieu va phoChuong 4.1 tin hieu va pho
Chuong 4.1 tin hieu va pho
 

En vedette

Kiến trúc máy tính và hợp ngữ bài 01
Kiến trúc máy tính và hợp ngữ bài 01Kiến trúc máy tính và hợp ngữ bài 01
Kiến trúc máy tính và hợp ngữ bài 01Nhóc Nhóc
 
Kiến trúc máy tính và hợp ngữ bài 08
Kiến trúc máy tính và hợp ngữ bài 08Kiến trúc máy tính và hợp ngữ bài 08
Kiến trúc máy tính và hợp ngữ bài 08Nhóc Nhóc
 
Kiến trúc máy tính và hợp ngữ bài 06
Kiến trúc máy tính và hợp ngữ bài 06Kiến trúc máy tính và hợp ngữ bài 06
Kiến trúc máy tính và hợp ngữ bài 06Nhóc Nhóc
 
KTMT Số Nguyên - Số Chấm Động
KTMT Số Nguyên - Số Chấm ĐộngKTMT Số Nguyên - Số Chấm Động
KTMT Số Nguyên - Số Chấm ĐộngDavid Nguyen
 
kiến trúc máy tính và hợp ngữ Bài 00
kiến trúc máy tính và hợp ngữ Bài 00kiến trúc máy tính và hợp ngữ Bài 00
kiến trúc máy tính và hợp ngữ Bài 00Nhóc Nhóc
 
Kiến trúc máy tính
Kiến trúc máy tínhKiến trúc máy tính
Kiến trúc máy tínhLE The Vinh
 
Bài tập kiến trúc máy tính
Bài tập kiến trúc máy tínhBài tập kiến trúc máy tính
Bài tập kiến trúc máy tínhHa Nguyen
 

En vedette (9)

Kiến trúc máy tính và hợp ngữ bài 01
Kiến trúc máy tính và hợp ngữ bài 01Kiến trúc máy tính và hợp ngữ bài 01
Kiến trúc máy tính và hợp ngữ bài 01
 
Kiến trúc máy tính và hợp ngữ bài 08
Kiến trúc máy tính và hợp ngữ bài 08Kiến trúc máy tính và hợp ngữ bài 08
Kiến trúc máy tính và hợp ngữ bài 08
 
Kiến trúc máy tính và hợp ngữ bài 06
Kiến trúc máy tính và hợp ngữ bài 06Kiến trúc máy tính và hợp ngữ bài 06
Kiến trúc máy tính và hợp ngữ bài 06
 
KTMT Số Nguyên - Số Chấm Động
KTMT Số Nguyên - Số Chấm ĐộngKTMT Số Nguyên - Số Chấm Động
KTMT Số Nguyên - Số Chấm Động
 
kiến trúc máy tính và hợp ngữ Bài 00
kiến trúc máy tính và hợp ngữ Bài 00kiến trúc máy tính và hợp ngữ Bài 00
kiến trúc máy tính và hợp ngữ Bài 00
 
Baigiang05 thuattoan(1s 1p)
Baigiang05 thuattoan(1s 1p)Baigiang05 thuattoan(1s 1p)
Baigiang05 thuattoan(1s 1p)
 
09 arithmetic
09 arithmetic09 arithmetic
09 arithmetic
 
Kiến trúc máy tính
Kiến trúc máy tínhKiến trúc máy tính
Kiến trúc máy tính
 
Bài tập kiến trúc máy tính
Bài tập kiến trúc máy tínhBài tập kiến trúc máy tính
Bài tập kiến trúc máy tính
 

Similaire à Kiến trúc máy tính và hợp ngữ bài 03

Nhom 10 - Tuan 4.pptx
Nhom 10 - Tuan 4.pptxNhom 10 - Tuan 4.pptx
Nhom 10 - Tuan 4.pptxHTunCng
 
Nhom 10 - Tuan 4.pptx
Nhom 10 - Tuan 4.pptxNhom 10 - Tuan 4.pptx
Nhom 10 - Tuan 4.pptxCường Hồ
 
Chương 2_Official -E.pdf
Chương 2_Official -E.pdfChương 2_Official -E.pdf
Chương 2_Official -E.pdfNhtAnhNguyn23
 
Dientuso Sld
Dientuso SldDientuso Sld
Dientuso Sldhoadktd
 
4 cac he_dem_dung_trong_tin_hoc
4 cac he_dem_dung_trong_tin_hoc4 cac he_dem_dung_trong_tin_hoc
4 cac he_dem_dung_trong_tin_hoctoanpv1989
 
Chuong 02 he thong so
Chuong 02 he thong soChuong 02 he thong so
Chuong 02 he thong soAnh Ngoc Phan
 
CHƯƠNG I_Lop10 bai2_THÔNG TIN VÀ DỮ LIỆU
CHƯƠNG I_Lop10  bai2_THÔNG TIN VÀ DỮ LIỆUCHƯƠNG I_Lop10  bai2_THÔNG TIN VÀ DỮ LIỆU
CHƯƠNG I_Lop10 bai2_THÔNG TIN VÀ DỮ LIỆUSP Tin K34
 
Lop10 _Chương1_ Bài 2 : Thông Tin Và Dữ Liệu
Lop10 _Chương1_ Bài 2 : Thông Tin Và Dữ Liệu Lop10 _Chương1_ Bài 2 : Thông Tin Và Dữ Liệu
Lop10 _Chương1_ Bài 2 : Thông Tin Và Dữ Liệu SP Tin K34
 
Bai02thongtinvadulieu_HuynhThiThuyLinh
Bai02thongtinvadulieu_HuynhThiThuyLinhBai02thongtinvadulieu_HuynhThiThuyLinh
Bai02thongtinvadulieu_HuynhThiThuyLinhlinhhuynhk37sptin
 
Bai 02 thong tin va du lieu
Bai 02 thong tin va du lieuBai 02 thong tin va du lieu
Bai 02 thong tin va du lieuquangaxa
 
Giáo trình kỹ thuật số chương 1-2.doc
Giáo trình kỹ thuật số chương 1-2.docGiáo trình kỹ thuật số chương 1-2.doc
Giáo trình kỹ thuật số chương 1-2.docMan_Ebook
 
Channel coding chuong 6 ma hoa kenh phan ma chap.ppt
Channel coding chuong 6 ma hoa kenh phan ma chap.pptChannel coding chuong 6 ma hoa kenh phan ma chap.ppt
Channel coding chuong 6 ma hoa kenh phan ma chap.pptnovrain1
 
Baigiang bai2c1lop10
Baigiang bai2c1lop10Baigiang bai2c1lop10
Baigiang bai2c1lop10Sunkute
 
Giao trinh ctmt
Giao trinh ctmtGiao trinh ctmt
Giao trinh ctmtcanh071179
 

Similaire à Kiến trúc máy tính và hợp ngữ bài 03 (20)

Nhom 10 - Tuan 4.pptx
Nhom 10 - Tuan 4.pptxNhom 10 - Tuan 4.pptx
Nhom 10 - Tuan 4.pptx
 
Nhom 10 - Tuan 4.pptx
Nhom 10 - Tuan 4.pptxNhom 10 - Tuan 4.pptx
Nhom 10 - Tuan 4.pptx
 
Chương 2_Official -E.pdf
Chương 2_Official -E.pdfChương 2_Official -E.pdf
Chương 2_Official -E.pdf
 
Dientuso Sld
Dientuso SldDientuso Sld
Dientuso Sld
 
Chuong1
Chuong1Chuong1
Chuong1
 
4 cac he_dem_dung_trong_tin_hoc
4 cac he_dem_dung_trong_tin_hoc4 cac he_dem_dung_trong_tin_hoc
4 cac he_dem_dung_trong_tin_hoc
 
Chuong 02 he thong so
Chuong 02 he thong soChuong 02 he thong so
Chuong 02 he thong so
 
CHƯƠNG I_Lop10 bai2_THÔNG TIN VÀ DỮ LIỆU
CHƯƠNG I_Lop10  bai2_THÔNG TIN VÀ DỮ LIỆUCHƯƠNG I_Lop10  bai2_THÔNG TIN VÀ DỮ LIỆU
CHƯƠNG I_Lop10 bai2_THÔNG TIN VÀ DỮ LIỆU
 
Lop10 _Chương1_ Bài 2 : Thông Tin Và Dữ Liệu
Lop10 _Chương1_ Bài 2 : Thông Tin Và Dữ Liệu Lop10 _Chương1_ Bài 2 : Thông Tin Và Dữ Liệu
Lop10 _Chương1_ Bài 2 : Thông Tin Và Dữ Liệu
 
Bai02thongtinvadulieu_HuynhThiThuyLinh
Bai02thongtinvadulieu_HuynhThiThuyLinhBai02thongtinvadulieu_HuynhThiThuyLinh
Bai02thongtinvadulieu_HuynhThiThuyLinh
 
Phan1 chuong1
Phan1 chuong1Phan1 chuong1
Phan1 chuong1
 
Gt kts
Gt kts Gt kts
Gt kts
 
Bai 02 thong tin va du lieu
Bai 02 thong tin va du lieuBai 02 thong tin va du lieu
Bai 02 thong tin va du lieu
 
C1 mtđt
C1 mtđtC1 mtđt
C1 mtđt
 
Tinhtoannhiphan
TinhtoannhiphanTinhtoannhiphan
Tinhtoannhiphan
 
Thdc 05
Thdc 05Thdc 05
Thdc 05
 
Giáo trình kỹ thuật số chương 1-2.doc
Giáo trình kỹ thuật số chương 1-2.docGiáo trình kỹ thuật số chương 1-2.doc
Giáo trình kỹ thuật số chương 1-2.doc
 
Channel coding chuong 6 ma hoa kenh phan ma chap.ppt
Channel coding chuong 6 ma hoa kenh phan ma chap.pptChannel coding chuong 6 ma hoa kenh phan ma chap.ppt
Channel coding chuong 6 ma hoa kenh phan ma chap.ppt
 
Baigiang bai2c1lop10
Baigiang bai2c1lop10Baigiang bai2c1lop10
Baigiang bai2c1lop10
 
Giao trinh ctmt
Giao trinh ctmtGiao trinh ctmt
Giao trinh ctmt
 

Plus de Nhóc Nhóc

Hướng dẫn giải bài tập Đại Số Tuyến Tính
Hướng dẫn giải bài tập Đại Số Tuyến TínhHướng dẫn giải bài tập Đại Số Tuyến Tính
Hướng dẫn giải bài tập Đại Số Tuyến TínhNhóc Nhóc
 
Pc magazine january 2015 usa
Pc magazine   january 2015  usaPc magazine   january 2015  usa
Pc magazine january 2015 usaNhóc Nhóc
 
Teach yourself photoshop 2014
Teach yourself photoshop   2014Teach yourself photoshop   2014
Teach yourself photoshop 2014Nhóc Nhóc
 
Lập trình web - HTML cơ bản
Lập trình web - HTML cơ bảnLập trình web - HTML cơ bản
Lập trình web - HTML cơ bảnNhóc Nhóc
 
Cơ bản về tcp ip
Cơ bản về tcp ipCơ bản về tcp ip
Cơ bản về tcp ipNhóc Nhóc
 
10 Command Line quan trọng để giao tiếp với Cisco IOs
10 Command Line quan trọng để giao tiếp với Cisco IOs10 Command Line quan trọng để giao tiếp với Cisco IOs
10 Command Line quan trọng để giao tiếp với Cisco IOsNhóc Nhóc
 
Computer World - April 21 2014
Computer World - April 21 2014Computer World - April 21 2014
Computer World - April 21 2014Nhóc Nhóc
 

Plus de Nhóc Nhóc (7)

Hướng dẫn giải bài tập Đại Số Tuyến Tính
Hướng dẫn giải bài tập Đại Số Tuyến TínhHướng dẫn giải bài tập Đại Số Tuyến Tính
Hướng dẫn giải bài tập Đại Số Tuyến Tính
 
Pc magazine january 2015 usa
Pc magazine   january 2015  usaPc magazine   january 2015  usa
Pc magazine january 2015 usa
 
Teach yourself photoshop 2014
Teach yourself photoshop   2014Teach yourself photoshop   2014
Teach yourself photoshop 2014
 
Lập trình web - HTML cơ bản
Lập trình web - HTML cơ bảnLập trình web - HTML cơ bản
Lập trình web - HTML cơ bản
 
Cơ bản về tcp ip
Cơ bản về tcp ipCơ bản về tcp ip
Cơ bản về tcp ip
 
10 Command Line quan trọng để giao tiếp với Cisco IOs
10 Command Line quan trọng để giao tiếp với Cisco IOs10 Command Line quan trọng để giao tiếp với Cisco IOs
10 Command Line quan trọng để giao tiếp với Cisco IOs
 
Computer World - April 21 2014
Computer World - April 21 2014Computer World - April 21 2014
Computer World - April 21 2014
 

Kiến trúc máy tính và hợp ngữ bài 03

  • 1. Bài 03: Số chấm động Phạm Tuấn Sơn ptson@fit.hcmus.edu.vn
  • 2. Vấn đề với biểu diễn số nguyên • Số nguyên N bit biểu diễn được 2N giá trị – Biểu diễn không dấu (Unsigned Integer) 0 à 2N – 1 (N=32, 2N–1 = 4,294,967,295) – Biểu diễn bù 2 -2(N-1) à 2(N-1) – 1 (N=32, 2(N-1) = 2,147,483,648) • Biểu diễn số rất lớn ? Số giây / 1 nghìn năm – 31,556,926,000 (3.1556926 x 1010) • Biểu diển số rất nhỏ ? Số giây / 1 nano giây – 0.00000000110 (1.010 x 10-9) • Biểu diễn số thập phân 1.5 ? 2
  • 3. Biểu diễn phần thập phân • Biểu diễn số 5.375 thế nào ? Cần bao nhiêu bit ? • Giả sử dùng 8 bit để lưu trữ phần nguyên 5 = 4 + 1 = 00000101 • Tương tự có thể dùng 8 bit lưu trữ phần thập phân 0.375 = 0.25 + 0.125 = 01100000 • Vậy có thể biểu diễn 5.375 = 00000101.01100000 • Tổng quát ta có: => Biểu diển số chấm tĩnh (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/16 5 0.03125 1/32 6 0.015625 ... 7 0.0078125 8 0.00390625 9 0.001953125 10 0.0009765625 11 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
  • 4. Giới hạn biểu diễn số chấm tĩnh • Với 8 bit – Phần nguyên lớn nhất có thể biểu diễn là 28 - 1= 255 – Phần thập phân nhỏ nhất có thể biểu diễn là 2-8 = 1/256 = 0.00390625 ~ 10-3 • Nếu muốn tính toán với số nhỏ hơn như 0.000110 hay 0.0000110 ? à Tăng số bit Với 16 bit phần thập phân min = 1/65536 = 0.0000152587890625 ~ 10-5 • Có cách nào tốt hơn ? 4
  • 5. Số chấm động – Ý tưởng • Hệ thập phân – 123000000000 ~ 1.23×1011 và 0.0000000000123 ~ 1.23×10-11 • Tương tự với hệ nhị phân, ta có x = 00000101.01100000 = 22 + 20 + 2-2 + 2-3 • Ta có thể viết lại x = 1.01011 × 22 • Thay vì dùng 16 bit để lưu trữ, chỉ cần dùng 7 bit (5 bit phần trị + 2 bit phần mũ) x = 1.01011 10 • Như vậy, – Muốn tiết kiệm số bit lưu trữ, ta đã di chuyển vị trí của dấu chấm sang phải 14 vị trí – Cần lưu: phần trị, phần mũ và …phần dấu => Đây là ý tưởng cơ bản của số chấm động (floating point) 5
  • 6. Biểu diễn số chấm động • Biểu diễn số chấm động – Sign (S): phần dấu – Exponent (E): phần số mũ – Significand (S): phần định trị • Giá trị ±S×2E 6 S Exponent Significand 1 bit m bits n bits
  • 7. Biểu diễn khoa học • Giá trị 1 / 1,000,000,000 có thể biểu diễn như sau: – 1.010 × 10-9 à Dạng chuẩn (Normalized form) – 0.110 × 10-8, 10.010 × 10-10 à Dạng không chuẩn (Denormalized form) • Dạng chuẩn: phần nguyên gồm 1 chữ số khác 0 7 6.0210 x 1023 radix (base) decimal point mantissa exponent 1.02 x 2-1 “binary point”
  • 8. Chuẩn số chấm động IEEE 754 • Biểu diễn số chấm động Single Precision (32 bit) – S: dấu (Sign) – 0: dương, 1: âm – Exponent: phần số mũ (lưu dưới dạng số biased) – Significand: phần định trị • Ngầm định bắt đầu là 1 + phần trị ~ (1 + 23) bits • Dạng chuẩn: +/-1.xxx…x2×2yyy…y2 • Ví dụ: Biểu diễn: 0 10000001 01011000000000000000000 Có giá trị: +1.0101100…00×210000001 ~ +(1+2-2 + 2-4 + 2-5) ×22 = 5.375 8 031 S Exponent 30 23 22 Significand 1 bit 8 bits 23 bits
  • 9. Chuyển từ biểu diễn nhị phân sang thập phân 9 • Dấu: 0 à dương • Mũ: – 0110 1000 có giá trị (dạng 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 • Kết quả: 1.666115×2-23 ~ 1.986×10-7 (~ 2/10,000,000) 0 0110 1000 101 0101 0100 0011 0100 0010
  • 10. Chuyển từ biểu diễn thập phân sang nhị phân -2.340625 x 101 1. Không chuẩn hóa: -23.40625 2. Chuyển phần nguyên: 23 = 16 + 4 + 2 + 1 = 10111 3. Chuyển phần thập phân: .40625 = .25 + .125 + .03125 = .01101 4. Kết hợp và chuẩn hóa: 10111.01101 = 1.011101101 x 24 5. Chuyển phần mũ: 127 + 4 = 10000011 10 1 1000 0011 011 1011 0100 0000 0000 0000
  • 11. Chuyển từ biểu diễn thập phân sang nhị phân (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 – Dấu: 0 – Mũ = -2 + 127 = 125 = 01111101 – Trị = 0101010101… 11 0 0111 1101 0101 0101 0101 0101 0101 010
  • 12. Các số đặc biệt • Phần mũ = 0, phần trị = 0 – Số zero • Phần mũ = 0, phần trị ≠ 0 – Số dạng không chuẩn (denormalized) • Phần mũ toàn bit 1, phần trị = 0 – Số vô cùng (infinity) • Phần mũ toàn bit 1, phần trị ≠ 0 – Số báo lỗi (NaN - Not a Number) • Signaling NaN • Quiet NaN 12
  • 13. Những trường hợp tạo số đặc biệt 1. X + (+∞) 2. X – (+∞) 3. X + (–∞) 4. X – (–∞) 5. X × (+∞) 6. X / (–∞) 7. (+∞) + (+∞) 8. (–∞) + (–∞) 9. (–∞) – (+∞) 10.(+∞) – (–∞) 13 11.(+∞) + (–∞) 12.(–∞) + (+∞) 13.(+∞) – (+∞) 14.(–∞) – (–∞) 15.∞ × 0 16.∞ / 0 17.X / 0 18.0 / 0 19.∞ / ∞ 20.sqrt(X), X<0 21.…………..
  • 14. Phân bố, phạm vi biểu diễn • Phân bố 14 • Phạm vi biểu diễn. Chứng minh ?
  • 15. Phân bố • Đặt f(1,2) = số lượng số chấm động trong khoảng 1 và 2 • Đặt f(2,3) = số lượng số chấm động trong khoảng 2 và 3 • Hỏi 1. f(1,2) < f(2,3) 2. f(1,2) = f(2,3) 3. f(1,2) > f(2,3) 15
  • 16. Số dạng không chuẩn • Số dương nhỏ nhất có thể biểu diễn a = 1.0… 2 × 2-126 = 2-126 Lý do: ngầm định 1 + phần trị • Giải pháp: – Qui ước nếu số mũ = 0 (phần trị ≠ 0), không ngầm định bắt đầu là 1 à Số dạng không chuẩn (denormalized) – Số dương nhỏ nhất có thể biểu diễn • a = 0.00…12 × 2-126 = 2-23 × 2-126 = 2-149 16 a0 +- Gaps! 0 +-
  • 17. Một số loại chấm động • Single Precision (32 bit) – 1/8/23 (kiểu float trong C), 10-38 à 1038 • Double Precision (64 bit) – 1/11/52 (kiểu double trong 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
  • 18. Biểu diễn số chấm động 8 bit 18
  • 19. Single Precision (32 bit) Double Precision (64 bit) Dấu Mũ Trị Giá trị Dấu Mũ Trị Giá trị +0 0 0 0 0 0 0 0 0 – 0 1 0 0 -0 1 0 0 -0 +∞ 0 255 (toàn bit 1) 0 ∞ 0 2047 (toàn bit 1) 0 ∞ – ∞ 1 255 (toàn bit 1) 0 -∞ 1 2047 (toàn bit 1) 0 -∞ Quiet NaN 0/ 1 255 (toàn bit 1) ≠ 0 NaN 0/ 1 2047 (toàn bit 1) ≠ 0 NaN Signaling NaN 0/ 1 255 (toàn bit 1) ≠ 0 NaN 0/ 1 2047 (toàn bit 1) ≠ 0 NaN Số dương (dạng chuẩn) 0 0<e<255 f 2e-127 (1.f) 0 0<e<2047 f 2e-1023 (1.f) Số âm (dạng chuẩn) 1 0<e<255 f -2e-127 (1.f) 1 0<e<2047 f -2e-1023 (1.f) Số dương (dạng không chuẩn) 0 0 f ≠ 0 2e-126 (0.f) 0 0 f ≠ 0 2e-1022 (0.f) Số âm (dạng không chuẩn) 1 0 f ≠ 0 -2e-126 (0.f) 1 0 f ≠ 0 -2e-1022 (0.f) Bảng tóm tắt số chấm động 19
  • 20. Khái niệm Precision và Accuracy • Precision: số bit được sử dụng trong máy tính để biểu diễn 1 giá trị. • Accuracy: độ chính xác mà một kiểu biểu diễn trong máy tính có thể biểu diễn được một giá trị. • Thường thì precision cao sẽ dẫn tới accuracy cao. • Ví dụ: float pi = 3.14; – pi được biểu diễn bởi 24 bit phần trị (precise cao), nhưng chỉ có thể biểu diễn được gần đúng pi (không accuracy). 20
  • 21. Làm tròn (Rounding) • Khi thực hiện các phép toán trên số chấm động, kết quả nhận được có thể vượt ra ngoài khả năng biểu diễn của phần định trị. • Phần cứng phục vụ các phép toán trên số chấm động thường có thêm 2 bit nhớ hỗ trợ cho phần định trị giúp thực hiện việc làm tròn để có được kết quả chính xác nhất có thể. • Ví dụ: thực hiện (1.00…00×21) – (1.11…11×20) 21 1.00….00 ×21 - 0.111….1 ×21 (= 1.11….11×20) 0.000..01 ×21 =1.00…00 ×2-22 1.00….00 00 ×21 - 0.111….1 10 ×21 (= 1.11….11×20) 0.000..00 10 ×21 =1.00…00 00 ×2-23
  • 22. Chuẩn IEEE làm tròn số chấm động • Làm tròn lên (Round up / Round towards +∞) 1.01 10 → 1.10 , -1.01 10 → -1.01 • Làm tròn xuống (Round down / Round towards –∞) 1.01 10 → 1.01, -1.01 10 → -1.10 • Làm tròn về 0 (Truncate / Round towards 0) – Bỏ giá trị 2 bit nhớ • Làm tròn về giá trị gần nhất (Round to nearest): – 1.01 01 → 1.01 , -1.01 11 → -1.10 – Trường hợp 2 bit nhớ là 10 (halfway) ? • Làm tròn về số chẵn gần nhất (mặc định), nghĩa là LSB của phần định trị luôn bằng 0 1.01 10 → 1.10 , -1.10 11 → -1.10 22
  • 23. Các trường hợp làm tròn khác • Làm tròn cũng được thực hiện khi thực hiện chuyển đổi: – Chuyển đổi từ kiểu double precision thành single precision – Chuyển đổi từ số chấm động thành số nguyên và ngược lại – Ép kiểu từ số chấm động thành số nguyên và ngược lại • Hãy khảo sát các trường hợp sau: 23 1.Chuyển đổi float -> int -> float.Kết quả như ban đầu ? 2.Chuyển đổi int -> float -> int. Kết quả như ban đầu ? 3.Phép cộng số chấm động có tính kết hợp ? (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”); }
  • 24. Phép cộng, trừ số chấm động 24
  • 25. Phép nhân số chấm động 25
  • 26. Phép chia số chấm động 26
  • 27. Tham khảo • Chương 3, P&H • Chương 9, William Stallings 27