Cùng tìm hiểu biểu diễn ký tự; biểu diễn số thực; các dạng biểu diễn cơ bản; dạng chính xác đơn (Single precision 32 bit); giá trị của số thực độ chính xác đơn (32 bit);... được trình bày cụ thể trong Bài giảng Tin học đại cương: Phần I (Chương 2, Phần 3) do TS.Nguyễn Bá Ngọc biên soạn.
IT1110 Tin học đại cương Phần I: Tin học căn bản Chương 2: Biểu diễn dữ liệu trong máy tính Nguyễn Bá Ngọc Nội dung chương này 2.1. Các hệ đếm 2.2. Biểu diễn dữ liệu và đơn vị đo 2.3. Biểu diễn số ngun 2.4. Phép tốn số học với số ngun 2.5. Tính tốn logic với số nhị phân 2.6. Biểu diễn ký tự 2.7. Biểu diễn số thực 2.6. Biểu diễn ký tự Nguyên tắc chung: Các ký tự cũng cần được biểu diễn bằng chuỗi bit nhị phân gọi là mã ký tự Số bit dùng để biểu diễn mỗi ký tự phụ thuộc vào bộ mã (ánh xạ 11 giữa ký tự và mã ký tự) được sử dụng. Vd : Bộ mã ASCII dùng 8 bit cho 1 ký tự Bộ mã Unicode dùng 16 bit. Bộ mã ASCII (American Standard Code for Information Interchange) Bộ mã đầu tiên được sử dụng trong máy tính Do ANSI (American National Standard Institute) thiết kế ASCII là bộ mã được dùng để trao đổi thông tin chuẩn của Mỹ. Lúc đầu chỉ dùng 7 bit (128 ký tự) sau đó mở rộng thành 8 bit và có thể biểu diễn 256 ký tự khác nhau trong máy tính Bộ mã ASCII mở rộng 8 bit bao gồm: 128 kí tự chuẩn có mã từ 0016 7F16 128 kí tự mở rộng có mã từ 8016 FF16 Ký tự điều khiển định dạng BS HT LF VT FF CR Backspace – Lùi lại một vị trí. Ký tự điều khiển con trỏ lùi lại một vị trí Horizontal Tab – Ký tự điều khiển con trỏ dịch đi một khoảng định trước Line Feed – Ký tự điều khiển con trỏ xuống dòng Vertical Tab – Ký tự điều khiển con trỏ dịch đi một số dòng Form Feed – Ký tự điều khiển con trỏ chuyển xuống đầu trang tiếp theo Carriage Return – Ký tự điều khiển con trỏ về đầu dòng hiện hành Bộ mã ASCII (1) 95 kí tự hiển thị được:có mã từ 2016 ÷ 7E16 10 chữ số thập phân '0' ÷ '9' có mã từ 3016 ÷ 3916 26 chữ cái hoa Latin 'A' ÷ 'Z' có mã từ 4116 ÷ 5A16 26 chữ cái thường Latin 'a' ÷ 'z' có mã từ 6116 ÷ 7A16 Bộ mã ASCII (2) 95 ký tự hiển thị được: Các dấu câu: . , ? ! : ; v.v Các dấu phép tốn: + * / v.v Một số kí tự thơng dụng: #, $, &, @, v.v Dấu cách (mã là 2016) 33 mã điều khiển: mã từ 0016 ÷ 1F16 và 7F16 dùng để mã hóa cho các chức năng điều khiển Các ký tự mở rộng của bảng mã ASCII Được định nghĩa bởi: Nhà chế tạo máy tính Người phát triển phần mềm Ví dụ: Bộ mã ký tự mở rộng của IBM: được dùng trên máy tính IBMPC Bộ mã ký tự mở rộng của Apple: được dùng trên máy tính Macintosh Các nhà phát triển phần mềm tiếng Việt cũng đã thay đổi phần này để mã hố cho các ký tự riêng của chữ Việt, ví dụ như bộ mã TCVN 5712, TCVN 3 (ABC), v. v 10 2.7. Biểu diễn số thực 2.7.1. Nguyên tắc chung Để biểu diễn số thực, trong máy tính thường dùng ký pháp dấu phẩy động (Floating Point Number). Tổng quát: một số thực X được biểu diễn theo kiểu số dấu phẩy động như sau: X = M * RE M là phần định trị (Mantissa) R là cơ số (Radix) E là phần mũ (Exponent) 13 2.7.2. Chuẩn IEEE7541985 14 Các dạng biểu diễn cơ bản 31 30 S 63 S 22 e m 62 52 51 e m 32 bit (dạng chính xác đơn – single precision) 23 kiểu float trong C exponent bias = 127 64 bit (dạng chính xác kép – double precision) kiểu double trong C exponent bias = 1023 15 Dạng chính xác đơn (Single precision 32 bit) S là bit dấu Phần mũ E: S = 0: số dương; S = 1: số âm E = e – 127, trong đó e (excess) có độ dài 8 bit Giá trị 127 gọi là độ lệch (bias) Phần định trị M=1.m, trong đó m là phần lẻ của phần định trị gồm 23 bit: 23 m b23 i i i Cơng thức xác định giá trị của số thực: X = (1)S * M * 2e127 16 Giá trị của số thực độ chính xác đơn (32 bit) Nếu các bit của e = 0 và các bit của m = 0 Các bit của e = 1, các bit của m = 0 S = 0 → X = +0 S = 1 → X = –0 S = 0 → X = + S = 1 → X = – Các bit của e = 1, còn m có ít nhất 1 bit = 1 thì nó khơng biểu diễn cho số nào cả (NaN – Not A Number, lỗi khi chia cho 0) 17 Giá trị của số thực độ chính xác đơn (32 bit) Denormalized numbers Tất cả các bit của e = 0 X = (1)S x 0.m x 2126 Normalized numbers min(E) = –126 với e = 1 max(E) = 127 với e = 254 (khi e = 255, X không phải là số hữu hạn) X = (1)S x 1.m x 2e – 127 18 Dạng 32 – bit. Ví dụ: Xác định giá trị của số thực được biểu diễn bằng 32 bit như sau: 1100 0001 0101 0110 0000 0000 0000 0000 S = 1 số âm e = 1000 00102 = 130 E = 130 – 127 = 3 Vậy, X= 1.10101100*23 = 1101.011 = 13.375 19 Dạng 32 – bit. Ví dụ (tiếp): 0011 1111 1000 0000 0000 0000 0000 0000 Kết quả = +1.0 20 Dải biểu diễn giá trị Độ chính xác đơn (32 bit) Giá trị gần 0 nhất (biểu diễn bởi denomalized numbers) là ± 2149 ≈ ±1,4012985 x 1045 Giá trị gần 0 nhất (biểu diễn bởi normalized numbers) là ± 2126 ≈ ±1,175494351 x 1038 Giá trị hữu hạn xa 0 nhất (với e = 254 và các bit trong m bằng 1) là ± (1 – 224) x 2128 ≈ ±3.4028235 x 1038 Số chữ số có nghĩa ≈ 7 21 Dải biểu diễn giá trị Độ chính xác kép (double precision 64 bit) Giá trị gần 0 nhất (biểu diễn bởi denomalized numbers) là ± 21074 ≈ ±5 x 10324 Giá trị gần 0 nhất (biểu diễn bởi normalized numbers) là ± 21022 ≈ ±2,2250738585072020 x 10308 Giá trị hữu hạn xa 0 nhất (với e = 2046 và các bit trong m bằng 1) là ± (1 – 253) x 21024 ≈ ±1.7976931348623157 x 1038 Số chữ số có nghĩa ≈ 15 22 Định dạng mở rộng Chuẩn IEEE7541985 chỉ xác định độ chính xác và lũy thừa tối thiểu cho mỗi định dạng mở rộng X87 80bit extended format là chuẩn được biết đến nhiều nhất thỏa mãn yêu cầu này 23 Thực hiện phép toán số dấu phẩy động X1 = M1 * RE1 X2 = M2 * RE2 Ta có: X1 * X2 = (M1 * M2) * RE1+ E2 X1 / X2 = (M1 / M2) * RE1 E2 X1 X2 = (M1* RE1E2 M2) * RE2, với E1 E2 24 Các khả năng tràn số Tràn trên số mũ (Exponent Overflow): mũ dương vượt ra khỏi giá trị cực đại của số mũ dương có thể ( ) Tràn dưới số mũ (Exponent Underflow): mũ âm vượt ra khỏi giá trị cực đại của số mũ âm có thể ( 0) Tràn trên phần định trị (Mantissa Overflow): cộng hai phần định trị có cùng dấu, kết quả bị nhớ ra ngồi bit cao nhất Tràn dưới phần định trị (Mantissa Underflow): Khi hiệu chỉnh phần định trị, các số bị mất ở bên phải phần định trị 25 Phép cộng và phép trừ Kiểm tra các số hạng có bằng 0 hay khơng Hiệu chỉnh phần định trị Cộng hoặc trừ phần định trị Chuẩn hóa kết quả 26 Hỏi đáp 27 ... D i biểu diễn giá trị Độ chính xác kép (double precision 64 bit) Giá trị gần 0 nhất (biểu diễn b i denomalized numbers) là ± 21074 ≈ ±5 x 10324 Giá trị gần 0 nhất (biểu diễn b i normalized ... 2.2. Biểu diễn dữ liệu và đơn vị đo 2.3. Biểu diễn số ngun 2.4. Phép tốn số học v i số ngun 2.5. Tính tốn logic v i số nhị phân 2.6. Biểu diễn ký tự 2.7. Biểu diễn số thực 12 2.7. Biểu diễn số thực... 2.6. Biểu diễn ký tự 2.7. Biểu diễn số thực 2.6. Biểu diễn ký tự Ngun tắc chung: Các ký tự cũng cần được biểu diễn bằng chu i bit nhị phân g i là mã ký tự Số bit dùng để biểu diễn m i ký tự