Bài giảng Kiến trúc máy tính và hợp ngữ - Chương 02: Biểu diễn số chấm động - Lê Quốc Hòa

Tuy nhiên…với 8 bit:
– Phần nguyên lớn nhất có thể biểu diễn: 255
– Phần thập phân nhỏ nhất 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 phần thập phân
– Với 16 bit cho phần thập phân: min = 2-16 ~ 10-5
– Có vẻ không hiệu quả…Cách tốt hơn ?
Floating Point Number (Số thực dấu chấm động) 
pdf 23 trang xuanthi 2880
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kiến trúc máy tính và hợp ngữ - Chương 02: Biểu diễn số chấm động - Lê Quốc Hòa", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfbai_giang_kien_truc_may_tinh_va_hop_ngu_chuong_02_bieu_dien.pdf

Nội dung text: Bài giảng Kiến trúc máy tính và hợp ngữ - Chương 02: Biểu diễn số chấm động - Lê Quốc Hòa

  1. • Biểu diễn 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ẻ – Với phần nguyên: Dùng 8 bit ([010, 25510]) 12310 = 64 + 32 + 16 + 8 + 2 + 1 = 0111 10112 – Với phần thập phân: Tương tự dùng 8 bit -2 -3 0.375 = 0.25 + 0.125 = 2 + 2 = 0110 00002 123.37510 = 0111 1011.0110 00002 • Tổng quát công thức khai triển của số thập phân hệ nhị phân: n 1 n 2 0 1 2 m xn 1xn 2 x0.x 1x 2 x m xn 1.2 xn 2.2 x0.2 x 1.2 x 2.2 x m 2 2
  2. • Giả sử ta có số (ở dạng nhị phân) -15 -16 X = 0.00000000000000112 = (2 + 2 )10 14 số 0 -14 -1 -2 -14 -15 -16 X = 0.112 * (2 )10 (= (2 + 2 ).2 = 2 + 2 ) 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) 4
  3. • Có nhiều chuẩn nhưng hiện 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) 6
  4. Biểu diễn số thực sau theo dạng số chấm động chính xác đơn (32 bit): X = -5.25 • Bước 1: Đổi X sang hệ nhị phân X = -5.2510 = -101.012 • Bước 2: Chuẩn hóa theo dạng ±1.F * 2E X = -5.25 = -101.01 = -1.0101 * 22 • Bước 3: Biểu diễn Floating Point – Số âm: bit dấu 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 – Phần đị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 8
  5. • Sở dĩ Exponent được lưu 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 toán 10
  6. • Khi muốn biểu diễn 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ề dạng ±1.F * 2E ? • Với số dạng ±0.F * 2-127 thì chuẩn hóa được nữa không? • Với 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 ? 12
  7. • Số 0 (zero) – Exponent = 0, Significand = 0 • Số không thể chuẩn hóa (denormalized) – Exponent = 0, Significand != 0 • Số vô cùng (infinity) – Exponent = 111 1 (toàn bit 1), Significand = 0 • Số báo lỗi (NaN – Not a Number) – Exponent = 111 1 (toàn bit 1), Significand != 0 14
  8. • 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: +0.[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 • Tương tự cho số negative (số âm) 16
  9. • Biểu diễn số thực sau theo dạng số chấm động chính xác đơn (32 bit): X = -12.625 • Bước 1: Đổi X sang hệ nhị phân X = -12.62510 = -1100.1012 • Bước 2: Chuẩn hóa theo dạng ±1.F * 2E 3 X = -12.62510 = -1100.1012 = -1.100101 * 2 • Bước 3: Biểu diễn Floating Point – Số dương: bit dấu Sign = 1 – 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 – Phần định trị = 1001 0100 0000 0000 0000 000 (Thêm 17 số 0 cho đủ 23 bit) Kết quả nhận được: 1 1000 0010 1001 0100 0000 0000 0000 000 20
  10. • Biểu diễn số thực sau theo dạng số chấm động chính xác đơn (32 bit): X = +1.1 * 2-128 • Lưu ý: – Số X: positive number – X < Smallest positive normalized number: +1.[23 số 0] * 2-126 số X là số không thể chuẩn hóa (denormalized number) Chuyển X về dạng: X = +0.011 * 2-126 • Bước 3: Biểu diễn Floating Point – Số dương: bit dấu Sign = 0 – Vì đây là số không thể chuẩn hóa Phần mũ exponent được biểu diễn: 0000 00002 – Phần định trị = 0110 0000 0000 0000 0000 000 Kết quả nhận được: 0 0000 0000 0110 0000 0000 0000 0000 000 22