Tải bản đầy đủ (.pdf) (27 trang)

Bài giảng Tin học đại cương: Phần I (Chương 2, Phần 3) - TS.Nguyễn Bá Ngọc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (785.45 KB, 27 trang )

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. Các hệ đếm
2.2. Biểu diễn dữ liệu và đơn vị đo
2.3. Biểu diễn số nguyên
2.4. Phép toán số học với số nguyên
2.5. Tính toá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


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
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.
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. Các hệ đếm
2.2. Biểu diễn dữ liệu và đơn vị đo
2.3. Biểu diễn số nguyên
2.4. Phép toán số học với số nguyên
2.5. Tính toá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.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 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


×