Biểu diễn dữ liệu trong máy tính

Download Report

Transcript Biểu diễn dữ liệu trong máy tính

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
1
Nội dung chương này







2.1.
2.2.
2.3.
2.4.
2.5.
2.6.
2.7.
Các hệ đếm
Biểu diễn dữ liệu và đơn vị đo
Biểu diễn số nguyên
Phép toán số học với số nguyên
Tính toán logic với số nhị phân
Biểu diễn ký tự
Biểu diễn số thực
2
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ạ 1-1 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.

3
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
4
5
Ký tự điều khiển định dạng
BS
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í.
HT
Horizontal Tab – Ký tự điều khiển con trỏ dịch đi một
khoảng định trước
LF
Line Feed – Ký tự điều khiển con trỏ xuống dòng
VT
Vertical Tab – Ký tự điều khiển con trỏ dịch đi một số
dòng
FF
Form Feed – Ký tự điều khiển con trỏ chuyển xuống đầu
trang tiếp theo.
CR
Carriage Return – Ký tự điều khiển con trỏ về đầu dòng
hiện hành.
6
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
8
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 toá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
9
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
IBM-PC.
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ã hoá 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
Bộ mã Unicode

Có hai dự án độc lập nhằm mục đích tạo ra bộ
mã chung cho tất cả các ngôn ngữ




ISO 10646
Unicode Project
Hai chuẩn này thống nhất về mã ký tự
Bảng mã Unicode dùng 16-bit để biểu diễn một
ký tự


Được chấp nhận ở Việt Nam
TCVN 6909:2001
11
Nội dung chương này







2.1.
2.2.
2.3.
2.4.
2.5.
2.6.
2.7.
Các hệ đếm
Biểu diễn dữ liệu và đơn vị đo
Biểu diễn số nguyên
Phép toán số học với số nguyên
Tính toán logic với số nhị phân
Biểu diễn ký tự
Biểu diễn số thực
12
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:
E
 X = M * R
 M là phần định trị (Mantissa)
 R là cơ số (Radix)
 E là phần mũ (Exponent)
13
2.7.2. Chuẩn IEEE754-1985
14
Các dạng biểu diễn cơ bản
31
30
S
63
S

22
0
e
m
62
52
51
e
0
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 2
i
i 1

Công thức xác định giá trị của số thực:
X = (-1)S * M * 2e-127
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 2-126
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à ± 2-149 ≈ ±1,4012985 x 10-45
Giá trị gần 0 nhất (biểu diễn bởi normalized
numbers) là ± 2-126 ≈ ±1,175494351 x 10-38
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 – 2-24) 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à ± 2-1074 ≈ ±5 x 10-324
Giá trị gần 0 nhất (biểu diễn bởi normalized
numbers) là
± 2-1022 ≈ ±2,2250738585072020 x 10-308
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 – 2-53) x 21024 ≈ ±1.7976931348623157 x 1038

Số chữ số có nghĩa ≈ 15
22
Định dạng mở rộng


Chuẩn IEEE754-1985 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 80-bit 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* RE1-E2  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 ngoà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