kiến trúc máy tính pham tuan son bài03 so cham dong sinhvienzone com

27 60 0
kiến trúc máy tính pham tuan son bài03 so cham dong sinhvienzone com

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài 03: Số chấm động Phạm Tuấn Sơn ptson@fit.hcmus.edu.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt Vấn đề với biểu diễn số nguyên • Số nguyên N bit biểu diễn 2N giá trị – Biểu diễn không dấu (Unsigned Integer) 2N – (N=32, 2N–1 = 4,294,967,295) – Biểu diễn bù -2(N-1) 2(N-1) – (N=32, 2(N-1) = 2,147,483,648) • Biểu diễn số lớn ? Số giây / nghìn năm – 31,556,926,000 (3.1556926 x 1010) • Biểu diển số nhỏ ? Số giây / nano giây – 0.00000000110 (1.010 x 10-9) • Biểu diễn số thập phân 1.5 ? CuuDuongThanCong.com https://fb.com/tailieudientucntt Biểu diễn phần thập phân • Biểu diễn số 5.375 ? Cần bit ? • Giả sử dùng bit để lưu trữ phần nguyên = + = 00000101 • Tương tự dùng bit lưu trữ phần thập phân 0.375 = 0.25 + 0.125 = 01100000 • Vậy biểu diễn 5.375 = 00000101.01100000 • Tổng qt ta có: xn −1 K x1 x0 x−1 x−2 K x− m = n ∑ i =− m xi 2i i 2-i 10 11 12 13 14 15 1.0 0.5 1/2 0.25 1/4 0.125 1/8 0.0625 1/16 0.03125 1/32 0.015625 0.0078125 0.00390625 0.001953125 0.0009765625 0.00048828125 0.000244140625 0.0001220703125 0.00006103515625 0.000030517578125 => Biểu diển số chấm tĩnh (fixed point) CuuDuongThanCong.com https://fb.com/tailieudientucntt Giới hạn biểu diễn số chấm tĩnh • Với bit – Phần nguyên lớn biểu diễn 28 - 1= 255 – Phần thập phân nhỏ biểu diễn 2-8 = 1/256 = 0.00390625 ~ 10-3 • Nếu muốn tính tốn với số nhỏ 0.000110 hay 0.0000110 ? Tăng số bit Với 16 bit phần thập phân = 1/65536 = 0.0000152587890625 ~ 10-5 • Có cách tốt ? CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 viết lại x = 1.01011 × 22 • Thay dùng 16 bit để lưu trữ, cần dùng bit (5 bit phần trị + 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í dấu chấm sang phải 14 vị trí – Cần lưu: phần trị, phần mũ …phần dấu => Đây ý tưởng số chấm động (floating point) CuuDuongThanCong.com https://fb.com/tailieudientucntt Biểu diễn số chấm động • Biểu diễn số chấm động S Exponent bit m bits Significand n bits – Sign (S): phần dấu – Exponent (E): phần số mũ – Significand (S): phn nh tr Giỏ tr Sì2E CuuDuongThanCong.com https://fb.com/tailieudientucntt Biểu diễn khoa học • Giá trị / 1,000,000,000 biểu diễn 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 chữ số khác decimal point 6.0210 x 1023 radix (base) mantissa 1.02 x 2-1 exponent “binary point” CuuDuongThanCong.com https://fb.com/tailieudientucntt Chuẩn số chấm động IEEE 754 • Biểu diễn số chấm động Single Precision (32 bit) 31 30 23 22 S Exponent bit bits Significand 23 bits – S: dấu (Sign) – 0: dương, 1: âm – Exponent: phần số mũ (lưu dạng số biased) – Significand: phần định trị • Ngầm định bắt đầu + phần trị ~ (1 + 23) bits • Dạng chuẩn: +/-1.xxxx2ì2yyyy2 Vớ d: Biu din: 10000001 01011000000000000000000 Cú giá trị: +1.0101100…00×210000001 ~ +(1+2-2 + 2-4 + 2-5) ×22 = 5.375 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chuyển từ biểu diễn nhị phân sang thập phân 0110 1000 101 0101 0100 0011 0100 0010 • Dấu: dương • Mũ: – 0110 1000 có giá trị (dạng biased) 104 - 127 = -23 • Trị: + 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) CuuDuongThanCong.com https://fb.com/tailieudientucntt Chuyển từ biểu diễn thập phân sang nhị phân -2.340625 x 101 Khơng chuẩn hóa: -23.40625 Chuyển phần nguyên: 23 = 16 + + + = 10111 Chuyển phần thập phân: 40625 = 25 + 125 + 03125 = 01101 Kết hợp chuẩn hóa: 10111.01101 = 1.011101101 x 24 Chuyển phần mũ: 127 + = 10000011 1000 0011 011 1011 0100 0000 0000 0000 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt Những trường hợp tạo số đặc biệt X + (+∞) X – (+∞) X + (–∞) X – (–∞) X × (+∞) X / (–∞) (+∞) + (+∞) (–∞) + (–∞) (–∞) – (+∞) 10.(+∞) – (–∞) 11.(+∞) + (–∞) 21.………… 12.(–∞) + (+∞) 13.(+∞) – (+∞) 14.(–∞) – (–∞) 15.∞ × 16.∞ / 17.X / 18.0 / 19.∞ / ∞ 20.sqrt(X), X f(2,3) 15 CuuDuongThanCong.com https://fb.com/tailieudientucntt Số dạng khơng chuẩn • Số dương nhỏ biểu diễn a = 1.0… × 2-126 = 2-126 Gaps! - a + Lý do: ngầm định + phần trị • Giải pháp: – Qui ước số mũ = (phần trị ≠ 0), không ngầm định bắt đầu Số dạng không chuẩn (denormalized) – Số dương nhỏ biểu diễn • a = 0.00…12 × 2-126 = 2-23 × 2-126 = 2-149 CuuDuongThanCong.com + 16 https://fb.com/tailieudientucntt Một số loại chấm động • Single Precision (32 bit) – 1/8/23 (kiểu float C), 10-38 1038 • Double Precision (64 bit) – 1/11/52 (kiểu double 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 en.wikipedia.org/wiki/Floating_point 17 CuuDuongThanCong.com https://fb.com/tailieudientucntt Biểu diễn số chấm động bit 18 CuuDuongThanCong.com https://fb.com/tailieudientucntt Bảng tóm tắt số chấm động 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 +∞ 255 (toàn bit 1) ∞ 2047 (toàn bit 1) ∞ –∞ 255 (toàn bit 1) -∞ 2047 (toàn bit 1) -∞ Quiet NaN 0/ 255 (toàn bit 1) ≠0 NaN 0/ 2047 (toàn bit 1) ≠0 NaN Signaling NaN 0/ 255 (toàn bit 1) ≠0 NaN 0/ 2047 (toàn bit 1) ≠0 NaN Số dương (dạng chuẩn) 0

Ngày đăng: 29/01/2020, 14:21

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan