You are on page 1of 14

Chương I KHÁI NIỆM CHUNG VỀ MÃ VÀ HỆ ĐẾM

1.1. KHÁI NIỆM CHUNG


1.1.1. Hệ đếm
Khái niệm: Hệ đếm là tập hợp các phương pháp gọi và biểu diễn các con số bằng
các kí hiệu có giá trị số lượng xác định gọi là chữ số.
Phân loại: Các hệ đếm được sử dụng trên thực tế được chia làm hai loại
 Hệ đếm theo vị trí: Là hệ đếm mà trong đó giá trị số lượng biểu diễn của chữ số
phụ thuộc vào vị trí của nó đứng trong dãy các chữ số.
Ví dụ: 1991 (Hệ thập phân)
1111 (Hệ nhị phân)
 Hệ đếm không theo vị trí: Là hệ đếm mà trong đó giá trị số lượng của chữ số
không phụ thuộc vào vị trí của nó tương ứng (đứng) trong dãy các chữ số.
Ví dụ: Hệ đếm La mã I, II, III . . . . .
1.1.2. Cơ số của hệ đếm
Một số A bất kỳ có thể biểu diễn một cách tổng quát bằng dãy các ký tự như sau:
A= am-1am-2. . . . .a0a-1 . . . . . . . . .a-n
Trong đó: ai (i=-n m-1) là các chữ số;
i: các hàng số, i xác định trọng số biểu diễn của chữ số (i nhỏ: hàng trẻ, i
lớn: hàng già).
Giá trị số lượng của các chữ số ai (N) của một hệ đếm được gọi là cơ số của hệ
đếm. Nói theo cách khác thì
0 ≤ ai ≤ N-1 (ai nguyên)
Ví dụ: N =10 ⇒ a = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
i
N =8 ⇒ a = 0, 1, 2, 3, 4, 5, 6, 7.
i
N =16 ⇒ a = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C,D, E, F.
i
N =2 ⇒ a = 0, 1.
i
Trong một hệ cơ số N, giá trị biểu diễn của số A dạng tổng quát như ở trên có thể
được biểu diễn dưới dạng một đa thức ký hiệu là A như sau:
(N)
m-1 m-2 0 -1 -n
A =a .N +a .N +. . ..+ a .N + a .N + . . + a .N
(N) m-1 m-2 0 -1 -n

m 1
Hay biểu diễn dưới dạng rút gọn: A(N) =  ai N i
i  n

m-1 m-1 0 -n
Với N=10: A =a .10 +a .10 +. . . . .+ a .10 +. . .+ a .10
(10) m-1 m-1 0 -n
3 2 1 -1 -2 -3
Ví du: 1999,999 =1.10 +9.10 +9.10 +9.10 +9.10 +9.10
m-1 -n
Với N=2: A =a .2 + . . .+a 2
(2) m-1 -n
3 2 1 0 -1 -2 -3
Ví du: 1111.110 = 1.2 +1.2 + 1.2 + 1.2 + 1.2 + 1.2 + 0.2
m-1 m-2 0 -1 -n
Với N=16: A =a .16 +a 16 +. . .+ a .16 +..+a 16 +. . .+ a 16
(16) m-1 m-2 0 -1 -n
2 1 0
Ví du: 3FFH = 3.16 + 15.16 + 15.16
1.1.3. Đổi cơ số
a. Đổi từ cơ số d sang cơ số 10
Về phương pháp, người ta khai triển con số trong cơ số d dưới dạng đa thức theo cơ
số của nó.
Ví dụ: A = 1101, đổi sang thập phân là:
(2)
3 2 1 0
1101 = 1.2 + 1.2 + 0.2 + 1.2 =13
(2) (10)

b. Đổi cơ số 10 sang cơ số d
Về nguyên tắc, người ta lấy con số trong cơ số chia liên tiếp cho cơ số d đến khi
thương số bằng không thì thôi.
Ví dụ:
25 2 6958 16
1 12 2 14 434 16
0 6 2 2 27 16
0 3 2 11 1 16
1 1 2 1 0
1 0

A=25(10)=11001(2) A=6958(10)=1B2E(16)
Kết luận: Gọi a , a , . . . . ..,a lần lượt là dư số của phép chia số thập phân cho cơ
1 2 n
số N lần thứ 1, 2, 3, 4, . . . . ., n thì kết quả sẽ là a a a .. a , nghĩa là dư số sau cùng là
n-1 n-2 n-3 0
chữ số có trọng số lớn nhất, còn dư số đầu tiên là chữ số có trọng số nhỏ nhất.
Trong các ví dụ biểu diễn ở trên để phân biệt cách biểu diễn ở các hệ đếm có cơ số
khác nhau người ta sử dụng các chỉ số dưới. Ngoài ra trong các ngôn ngữ lập trình người
ta còn sử dụng các ký tự chữ để phân biệt cách biểu diễn như sau:

B – Hệ nhị phân (Binary) D – Hệ thập phân (Decmal)


O – Hệ bát phân (Octal) H – Hệ thập lục phân (Hexadecimal)
Ví dụ: 1010B tương đương với 1010(2)
2F8H tương đương với 2F8(16)
1.2. HỆ ĐẾM NHỊ PHÂN VÀ KHÁI NIỆM VỀ MÃ HÓA
1.2.1. Hệ đếm nhị phân
a. Khái niệm
Hệ đếm nhị phân còn gọi là hệ đếm cơ số 2 là hệ đếm mà trong đó người ta chỉ sử
dụng hai kí hiệu 0 và 1 để biểu diễn tất cả các số. Hai ký hiệu đó gọi chung là bit hoặc
digit và nó đặc trưng cho mạch điện tử có hai trạng thái ổn định hay còn gọi là 2 trạng
thái bền FLIP- FLOP (ký hiệu là FF).
b. Quy ước
Trong hệ đếm nhị phân, để thuận tiện cho việc quản lý biểu diễn của số người ta sử
dụng các quy ước như sau:
4bit  1 Nibble 210 Byte  1 Kilobyte (KB)
8bit  1 Byte 210 Kilobyte  1 Megabyte (MB)
2byte  1 Word 210 Megabyte  1 Gigabyte (GB)
c. Biểu diễn số nhị phân
Xét số nhị phân 4 bít: A = a a a a . Biểu diễn dưới dạng đa thức theo cơ số của nó
3 2 1 0
là:
3 2 1 0
a a a a = a .2 + a . 2 + a .2 + a .2
3 2 1 0 3 2 1 0
0 1 2 3
Trong đó: 2 , 2 , 2 , 2 (hay 1, 2, 4, 8) được gọi là các trọng số.
a được gọi là bit có trọng số nhỏ nhất, hay còn gọi bit có trọng số nhỏ
0
nhất (LSB: Least Significant Bit).
a được gọi là bit có trọng số lớn nhất, hay còn gọi là bít có trọng số lớn nhất
3
(MSB: Most Significant Bit).
Như vậy, với số nhị phân 4 bit a a a a , mà trong đó mỗi chữ số a chỉ nhận được
3 2 1 0 i
4
hai giá trị {0,1}, ta có 2 = 16 tổ hợp nhị phân. Các tổ hợp nhị phân và biểu diễn ở các hệ
thập phân, bát phân và thập lục phân được biểu diễn trên bảng 1.1
Bảng 1.1

Số thập phân a aaa Số bát phân Số thập lục phân


3 2 1 0
0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 4 4
5 0101 5 5
6 0110 6 6
7 0111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
Một cách tổng quát, với một số nhị phân n bit ta có 2n tổ hợp nhị phân.
d. Chuyển đổi giữa các hệ đếm cơ số 2, 8 và 16
Trong kỹ thuật lập trình, việc biểu diễn các số dưới dạng số nhị phân gây ra nhiều
khó khăn đối với con người. Chúng làm cho việc trình bày chở nên dài dòng, phức tạp và
dễ gây nhầm lẫn trong việc biểu diễn. Để khắc phục điều này, người ta sử dụng các hệ bát
phân và thập lục phân. Do đó, việc chuyển đổi qua lại giữa các hệ đếm kể trên là cần
thiết.
Khả năng biểu diễn của một chữ số ở hệ bát phân và thập lục phân tương đương với
một số nhị phân 3 bit và 4 bit. Vì vậy việc chuyển đổi từ số nhị phân sang hệ bát phân và
hệ thập lục phân được thực hiện đơn giản như sau:
 Tách số nhị phân tương ứng thành các nhóm 3bit (đổi sang hệ bát phân) hay 4bit
(đổi sang hệ thập lục phân) tính từ bit MSB lên đến bit LSB. Nếu nhóm cuối cùng
không đủ số bit thì bổ xung thêm các bit 0 vào trước bit LSB.
 Chuyển đổi các nhóm 3bit hay 4bit thành các số bát phân hay thập lục phân tương
ứng.
 Ghép các chữ số thu được theo thứ tự của các nhóm bit.
Ví dụ: Chuyển đổi số nhị phân 1101101110(2) sang hệ bát phân và thập lục phân.

Hệ bát phân 1 5 5 6

Hệ nhị phân 1 1 0 1 1 0 1 1 1 0
Hệ thập lục phân 3 6 E

Vậy số nhị phân 1101101110(2) có thể được biểu diễn trong hệ


 Hệ bát phân là: 1556(8).
 Hệ thập lục phân là: 36F(16).
1.2.2 Các phép tính trên số nhị phân
Cũng như ở hệ thập phân, các phép toán số học cũng có thể được thực hiện một
cách tương tự đối với các số ở hệ nhị phân.
a. Phép cộng
Để cộng hai số nhị phân, người ta dựa trên qui tắc cộng như sau:
Quy tắc Ví dụ:
0 + 0 = 0 nhớ 0 5 →  101
0 + 1 = 1 nhớ 0
6 → 110
1 + 0 = 1 nhớ 0
1 + 1 = 0 nhớ 1 11 → 1011(2)  11(10)

b. Phép trừ
Quy tắc Ví dụ:
0 - 0 = 0 mượn 0  11 →  1011
0 - 1 = 1 mươn 1
7 → 111
1 - 0 = 1 mượn 0
1 - 1 = 0 mượn 0 4 → 100(2)  4(10)
c. Phép nhân
Quy tắc Ví dụ:
0.0=0 x7 → x 111
0.1=0
5 → 101
1.0=0
1.1=1 35 111
000
111
100011(2)  35(10)

d. Phép chia
Quy tắc Ví dụ:
0:1=0 35 5 → 100011 101
1:1=1 →
35 7 101 111(2)  7(10)
(Số chia không được bằng 0 111
0)
101
101
101
0
e. Các phép toán logic
Các phép toán logic chỉ được thực hiện giữa hai bit với nhau. Trong kỹ thuật lập
trình, các phép toán logic cũng được thực hiện giữa các số nhị phân nhiều bit với nhau.
Trong trường hợp này, các phép toán logic được thực hiện trên các bit tương ứng của hai
toán hạng và đưa ra bit tương ứng của kết quả.
Bảng 1.2
Toán tử Kết Quả

A B A And B A Or B A Nand B A Nor B A Xor B Not A

0 0 0 0 1 1 0 1
0 1 0 1 1 0 1 1
1 0 0 1 1 0 1 0
1 1 1 1 0 0 0 0
1.2.3. Khái niệm về mã hóa
Mã hóa đã được hình thành và phát triển cùng với của lịch sử loài người. Mã hóa
được sinh ra do nhu cầu giao tiếp và trao đổi thông tin của con người. Từ thủa sơ khai
con người đã biết sử dụng âm thanh (tiếng chiêng, tiếng trống...), ánh sáng (lửa, khói, đèn
hiệu...), hình ảnh (cờ hiệu)... để truyền thông tin. Trong đời sống hàng ngày, con người
giao tiếp với nhau thông qua các hệ thống ngôn ngữ, chữ viết qui ước. Ngôn ngữ hay chữ
viết cũng chính là một dạng mã hóa âm thanh, hình ảnh mà con người sử dụng.
Do đó nói một cách khái quát Mã hóa là hệ thống các quy ước để các đối tượng
tham gia giao tiếp thống nhất với nhau để có thể hiểu để trao đổi thông tin với nhau.
Trong lĩnh vực máy tính, các máy tính chỉ có thể hiểu và xử lý các dữ liệu dưới
dạng số nhị phân. Do đó, để máy tính có thể thực hiện được những bài toán do con người
đặt ra thì cần cung cấp cho máy tính thông tin dưới dạng dữ liệu mà máy tính có thể hiểu
được. Để thực hiện điều đó, người ta đặt ra vấn đề về mã hóa dữ liệu. Như vậy trong lĩnh
vực máy tính, mã hóa là quá trình biến đổi những thông tin thành dữ liệu quen thuộc
với máy tính.
Các dạng mã hóa trong lĩnh vực máy tính gồm :
- Mã hóa số (mã hóa số thập phân – số nhị phân)
- Mã hóa ký tự
- Mã hóa lệnh
- Mã hóa âm thanh
- Mã hóa hình ảnh
- Mã hóa các đại lượng vật lý (mức, nhiệt độ, tốc độ, dòng điện, điện áp ...)
- ...
1.3. MÃ HÓA SỐ THẬP PHÂN
1.3.1. Mã hóa BCD
Mã hóa BCD (Binary Coded Decimal) là phương pháp mã hóa mà trong đó người ta
sử dụng một số nhị phân có số bit cố định (thường là 4bit) để biểu diễn cho một chữ số
thập phân.
Ví dụ:
Mã BCD Số thập phân Mã BCD Số thập phân
0000 0 0101 5
0001 1 0110 6
0010 2 0111 7
0011 3 1000 8
0100 4 1001 9
Khi sử dụng số nhị phân 4 bit để mã hóa các số thập phân, các tổ hợp mã nhị phân
4
(trạng thái) có thể biểu diễn được tương ứng là 2 = 16. Trong khi đó các ký hiệu thập
phân chỉ có 10 ký tự (từ 0 đến 9). Do đó, trong thực tế có nhiều loại mã BCD khác nhau.
Sự khác nhau giữa các loại mã BCD là do quy ước lựa chọn 10 tổ hợp trong 16 tổ hợp số
nhị phân 4 bit.
Trong thực tế, mã BCD được chia thành hai nhóm chính: BCD có trọng số và BCD
không có trọng số.
a. Mã BCD có trọng số
Mã BCD có trọng số gồm có mã BCD tự nhiên, mã BCD số học.
- Mã BCD tự nhiên đó là loại mã mà trong đó các trọng số thường được sắp
xếp theo thứ tự tăng dần.
Ví dụ: Mã BCD8421 , mã BCD5421
- Mã BCD số học là loại mã mà trong đó có tổng các trọng số luôn luôn
bằng 9.
Ví dụ: Loại mã: BCD2421, BCD5121, BCD84-2-1
Suy ra mã BCD số học có đặc trưng: Để tìm từ mã thập phân của một số thập phân
nào đó ta lấy bù (đảo) từ mã nhị phân của số bù 9 tương ứng.
b. Mã BCD không có trọng số
Là loại mã BCD không cho phép phân tích thành đa thức theo trọng số. Các mã
BCD không có trọng số là: Mã Gray, Mã thừa 3.
Đặc điểm của mã Gray là hai mã nhị phân đứng kế tiếp chỉ sai khác nhau ở một bit.
Bảng 1.3 Các mã BCD tự nhiên
BCD 8421 BCD 5421 BCD quá 3 Thập
a3 a2 a1 a0 b3 b2 b1 b0 c3 c2 c1 c0 phân
0 0 0 0 0 0 0 0 0 0 1 1 0
0 0 0 1 0 0 0 1 0 1 0 0 1
0 0 1 0 0 0 1 0 0 1 0 1 2
0 0 1 1 0 0 1 1 0 1 1 0 3
0 1 0 0 0 1 0 0 0 1 1 1 4
0 1 0 1 1 0 0 0 1 0 0 0 5
0 1 1 0 1 0 0 1 1 0 0 1 6
0 1 1 1 1 0 1 0 1 0 1 0 7
1 0 0 0 1 0 1 1 1 0 1 1 8
1 0 0 1 1 1 0 0 1 1 0 0 9
Bảng 1.4 Các Mã BCD số học
BCD 2421 BCD 5121 BCD 84-2-1 Thập
a3 a2 a1 a0 b3 b2 b1 b0 c3 c2 c1 c0 phân
0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 1 0 1 1 1 1
0 0 1 0 0 0 1 0 0 1 1 0 2
0 0 1 1 0 0 1 1 0 1 0 1 3
0 1 0 0 0 1 1 1 0 1 0 0 4
1 0 1 1 1 0 0 0 1 0 1 1 5
1 1 0 0 1 1 0 0 1 0 1 0 6
1 1 0 1 1 1 0 1 1 0 0 1 7
1 1 1 0 1 1 1 0 1 0 0 0 8
1 1 1 1 1 1 1 1 1 1 1 1 9

Bảng 1.5 Các Mã BCD tự nhiên và Gray


BCD 8421 BCD quá 3 Mã Gray Thập
a3 a2 a1 a0 b3 b2 b1 b0 c3 c2 c1 c0 phân
0 0 0 0 0 0 1 1 0 0 0 0 0
0 0 0 1 0 1 0 0 0 0 0 1 1
0 0 1 0 0 1 0 1 0 0 1 1 2
0 0 1 1 0 1 1 0 0 0 1 0 3
0 1 0 0 0 1 1 1 0 1 1 0 4
0 1 0 1 1 0 0 0 0 1 1 1 5
0 1 1 0 1 0 0 1 0 1 0 1 6
0 1 1 1 1 0 1 0 0 1 0 0 7
1 0 0 0 1 0 1 1 1 1 0 0 8
1 0 0 1 1 1 0 0 1 1 0 1 9

1.3.2 Biểu diến số nguyên


Trong hầu hết các ngôn ngữ lập trình các số nguyên được mã hóa bằng các số nhị
phân có độ dài N= 8/16/32 bit dưới hai dạng là số nguyên không dấu và số nguyên có
dấu.
Số nguyên không dấu (unsigned integer): được sử dụng để biểu diễn các số nguyên
dương, các số này dùng để biểu diễn các đại lượng dương (địa chỉ ô nhớ, bộ đếm…).
Cách biểu diễn số nguyên không dấu là cách biểu diễn số trong hệ đếm nhị phân như đã
được trình bày ở mục 1.1.1. Các giá trị số biểu diễn được của số nguyên không dấu là:
0  A  2N-1
Số nguyên có dấu (singned integer): do trong các hệ máy tính chỉ có thể hiểu và sử
lý các dữ liệu dưới dạng mã nhị phân nên không có các ký hiệu để mã hóa cho dấu dương
và âm. Vì vậy, người ta phải sử dụng bit có trọng số cao nhất MSB để biểu diễn dấu của
số.
Dấu của số được biểu diễn phụ thuộc vào giá trị của MSB như sau:
- MSB=1 biểu diễn dấu âm,
- MSB=0 biểu diễn dấu dương.
Ví dụ: Số nhị phân 7 bit biểu diễn được các giá trị trong khoảng từ 0000000 đến
1111111. Để biểu diễn được giá trị từ -1111111 đến 0 thì người ta sử dụng thêm bit thứ 8
để biểu diễn dấu âm. Khi đó:
 +126(10) = 01111110(2)
 - 126(10) = 11111110(2)
Trong thực tế, người ta còn sử dụng một cách biểu diễn số âm khác nữa là sử dụng
số bù. Kỹ thuật biểu diễn số âm bằng số bù cho phép máy tính thực hiện các phép toán
cộng và trừ chỉ bằng một phép tính cộng.
Ở một hệ cơ số N bất kỳ số âm có thể được biểu diễn qua số bù N. Số bù N của một
số A được xác định bằng cách lấy (N-1) trừ đi các chữ số nằm trong dãy biểu diễn của số
A. Sau đó cộng thêm 1 vào giá trị thu được. Số bù N cũng có thể được xác định bằng
công thức:
Số bù N của A = Nk – A
Trong đó: k là số chữ số biểu diễn của A (số digit).
Ví dụ: Xác định số bù 10 của số có hai chữ số A=78(10).
Số bù 10 của A là: 21(10) + 1(10) = 22(10) hoặc 102(10) - 78(10) = 22(10)
Do đó ở hệ nhị phân, số bù 2 của một số A có k chữ số có thể được xác định như
sau:
 Lấy số bù 1 của A bằng cách nghịch đảo tất cả các bit của A.
 Số bù 2 là một số nguyên là một số nguyên nhận được bằng cách cộng 1 vào số bù
1 của A.
Ví dụ: Cho số nhị phân 8 bit A = 0000 1010(2)
Số bù 1 của A là: 1111 0101(2)
Số bù 2 của A là: 1111 0101(2) + 0000 0001(2) = 1111 0110(2).
1.3.3 Biểu diễn số thực
Có hai cách biểu diễn số thực trong hệ nhị phân: số thực có dấu chấm cố định (fixed
point number) và số thực có dấu chấm động (floating point number). Khái niệm dấu
chấm ở đây là ở hệ biểu diễn số ở các nước Anh, Mỹ dùng để phân cách giữa phần
nguyên và phần thập phân của một số thực. Ở Việt Nam và một số nước châu Âu dấu
chấm này tương đương với dấu phảy.
a. Biểu diễn số thực có dấu chấm cố định
Cách biểu diễn số thực có dấu chấm cố định hoàn toàn tương tự như cách biểu diễn
một số thực thông thường của hệ thập phân. Phần nguyên được viết ở bên trái dấu chấm
còn phần thập phân được viết bên phải của dấu chấm. Công thức tổng quát để biểu diễn
một số thực có dấu chấm cố định như sau:
  
R  an 1an 1 ...a0 .b1 ...bm  a0 N 0  a1N 1  ...  an 1N n 1  b1N 1  ...  bm N m 
m 1 m
  ai N i   bk N k
i0 k 0

Trong hệ nhị phân, do không có ký tự biểu diễn dấu chấm nên người ta sử dụng dấu
chấm ảo (quy ước) để phân biệt giữa phần nguyên và phần thập phân.
2n-1 2n-2 2n-3 2n-1 2n-2 2-1 2-2 2-m
an-1 an-2 an-3 a1 a0 b1 b2 bm

n bit phần nguyên m bit phần thập phân


Bit dấu

Hình 1.1 Biểu diễn số thực có dấu chấm cố định


Ví dụ: N2 =(011011.01)2
N2 =(011011.01)2 =1.24 +1.23 +0.22 +1.21 +1.20 +0.2-1 +1.2-2
=16+8+0+2+1+0+0.25
=(27,25)10

Nhược điểm của cách biểu diễn số thực có dấu chấm cố định là:
 Vùng biểu diễn số nguyên bị hạn chế bởi dấu phảy tĩnh được gán cố định
 Hiện tượng tràn số khi thực hiện các phép nhân hai số lớn.
b. Biểu diễn số thực có dấu chấm động
Khác với dấu chấm tĩnh, dấu chấm động biểu diễn số thực với khả năng hiểu chỉnh
vị trí dấu chấm theo giá trị của số thực. Biểu diễn dấu chấm động là một phương pháp
biểu diễn số khoa học bao gồm 3 phần:
 Phần biểu diến dấu dương hay âm
 Phần biểu diễn giá trị số (mantissa M )
 Phần biểu diễn số mũ (exponent Ne)
Cách biểu diễn số thực tổng quát trong các hệ đếm là:
R=(-1)S ×M×NE
Trong hệ nhị phân thì có cơ số của hệ đếm là N=2. Do đó công thức tổng quát trong
hệ nhị phân là:
R=(-1)S ×M×2E-bias
Có nhiều định dạng dấu chấm động cho hệ nhị phân khác nhau nhưng trong kỹ
thuật lập trình có hai chuẩn thông dụng nhất là MSBIN (Microsoft binary format) của
Microsoft và chuẩn IEEE (institute of electrical and electronic engineering).
Chuẩn IEEE 754-1985
Chuẩn IEEE 754-1985 là chuẩn được mọi hãng chấp nhận và sử dụng trong bộ xử
lý toán học của Intel. Trong tiêu chuẩn này quy định hai dạng biểu diễn số thực có độ dài
32 và 64 bit hay còn gọi là số thực dạng ngắn và số thực dạng dài. Phần dấu, phần giá trị
và phần mũ của số thực (định dạng – format) được quy định như trên hình 1.2. Giá trị số
thực được xác định theo đa thức sau


R=(-1)s × 1+M1 2-1 + 
+Mn 2-n ×2E-bias

Trong đó: Phần biểu diễn số mũ có độ dài 8 bits (E7E0) cho số 32 bits và có độ dài
11 bits (E10E0) cho số 64 bits.
Giá trị bias trong phần biểu diễn số mũ là 127 bit cho số 32 bits và 1023
cho số 64 bits.
Phần định trị có độ dài 23 và 52 bit. Dạng của phần định trị M là 1.f với
giá trị 1 được ẩn trong đa thức. Do đó 1  M  2.
31 30 23 22 0

S Phần mũ E7-E0 Phần định trị M1-M23

63 62 52 51 0

S Phần mũ E10-E0 Phần định trị M1-M52

Hình 1.2 Biễu diễn số thực dấu phảy động theo tiêu chuẩn IEEE 754-1985

Chuẩn MSBIN
Chuẩn MSBIN là chuẩn được dùng trong các phần mềm của hãng Microsoft. Trong
đó đa thức biểu diễn số thực cũng được trình bày như trong tiêu chuẩn IEEE như sau:


R=(-1)s × 1+M1 2-1 + 
+Mn 2-n ×2E-bias

Trong đó: Phần biểu diễn số mũ có cùng độ dài 8 bits (E7E0) cho số 32 bits và cho
số 64 bits.
Giá trị bias trong phần biểu diễn số mũ là 129 cho số 32 bits và số 64
bits.
Phần định trị có độ dài 23 và 55 bit. Dạng của phần định trị M là 1.f với
giá trị 1 được ẩn trong đa thức. Do đó 1  M  2.
Định dạng dạng của số thực theo tiêu chuẩn MSBIN được biểu diễn như hình 1.3.
31 24 23 22 0

Phần mũ E7-E0 S Phần định trị M1-M23

63 56 55 54 0

Phần mũ E7-E0 S Phần định trị M1-M52

Hình 1.3 Biểu diễn số thực có dấu chấm động theo chuẩn MSBIN
Ví dụ: Biểu diễn số R = 28.375 dưới dạng dấu phẩy động có độ dài 32 bits theo
IEEE 754
Biểu diễn phần nguyên của số R: 28(10) = 11100(2) (Cách xác định như trong phần
biểu diễn số nhị phân)
Biểu diễn phần thập phân của số R:

0.375(10)  N(2)?
0.375x2=0.75  0+0.75 Bit có trong số 2-1
-2
0.75x2=1.50  1+0.50 Bit có trong số 2
0.50x2=1.00  1+0 Bit có trong số 2-3

 0.375(10) = 0.011(2).
Do đó R = 28.375(10) = 11100.011(2) = 1.1100011(2)x24
Biểu diễn theo tiêu chuẩn IEEE 32bit như sau:
 Số dương  S=0
 Phần định trị 23bit  M = 110 0011 0000 0000 0000 0000
 Số mũ 8bit E - 127 = 4  E = 131(10) = 10000011(2).

Tiêu chuẩn S E7  E0 M1  M23


IEEE 754 0 1000 0011 110 0011 0000 0000 0000 0000
Ví dụ: Tìm số dạng thập phân của số dấu phẩy động biểu diễn dưới dạng IEEE 754
32 bits sau: R = BD300000(16)
R = 1011 1101 0011 0000 0000 0000 0000 0000(2)

Tiêu chuẩn S E7 ... E0 M1 ... M23


IEEE 754 1 0111 1010 011 0000 0000 0000 0000 0000

Số âm Số mũ: 122 - 127 = -5 Định trị: M = 1+0x2-1+1x2-2+1x2-3 = 1.375


Do đó R = BD300000(16) = -1.375x2-5 = -0.04296875(10).
1.4 MÃ ASCII (American Standard Code for Information Interchange)
Để máy tính có thể gửi thông tin (kết quả, thông báo ...) cho con người, máy tính
cần một dao diện thích hợp mà con người có thể hiểu được. Một trong những cách phổ
biến nhất để con người trao đổi thông tin là bộ chữ viết. Để mã hóa chữ viết người ta gán
cho mỗi ký tự một một số nhị phân nhất định.
ASCII là bảng mã hóa ký tự được dựa trên hệ thống ký tự tiếng Anh. Bảng mã
ASCII thể hiện ký tự trong máy tính, các thiết bị truyền thông, và các thiết bị khác sử
dụng ký tự. Hầu hết các bảng mã hóa ký tự trên thế giới được xây dựng dựa trên ASCII,
mặc dù các bảng mã hóa đó hỗ trợ hiển thị rất nhiều dạng kỹ tự hơn mã ASCII (bảng mã
unicode UTF 8, UTF 16, ISCII - India, VISCII - Vietnam, YUSCII - Yugoslavia...)
ASCII được phát triển từ các mã trong lĩnh vực điện tín. Chúng được sử dụng
thương mại lần đầu tiên ở máy in từ xa 7 bit, giới thiệu bởi công ty truyền thông Bell.
ASCII bao gồm 128 định nghĩa kỹ tự: 33 ký tự điều khiển (không in được) dùng để
điều khiển xử lý ký tự; 95 ký tự có thể in được. Chi tiết của phân bố này được thể hiện
trong bảng 1.6
Bảng mã ASCII mở rộng (Extended ASCII codes) 8bit bổ xung thêm mã hóa cho
128 ký tự đặc biệt từ 128 đến 255. Toàn bộ bảng mã ASCII được trình bày trong phụ lục
1.
Mã ASCII đã được sử dụng rộng rãi cho việc mã hóa ký tự trên mạng diện rộng
dưới tên US-ASCII cho tới năm 2007, khi chúng bị vượt qua bởi mã Unicode UTF-8.
Bảng 1.6 Phân bố mã ASCII

Ký tự Mã thập phân Mã hexa


NULL 0 0
31 ký tự điều khiển 1-31 1-1F
Các dấu 32-47 20-2F
Số 0-9 48-57 30-39
Chữ hoa A-Z 65-90 41-5A
Các dấu 91-96 5B-60
Chữ thường a-z 97-122 61-7A
Các dấu 123-127 7B-7F
Ví dụ: Mã hóa chuỗi ký tự “MDC 2013” theo mã ASCII và biểu diễn dưới dạng
chuỗi số hexa.
Tra bảng mã ASCII ta thu được mã của các ký tự lần lượt như sau:

M D C 2 0 1 3
4Dh 44h 43h 20h 32h 30h 31h 33h
BÀI TẬP CHƯƠNG I

1. Đổi những số nhị phân và số hex sau ra số thập phân:1110, 100101011110,


A5BCh, F2DEh.
2. Đổi những số thập phân sau: 98, 124 ra số nhị phân; 954, 23390 ra số hex
3. Đổi những số sau: 10011100, 1011100011000011 ra số hex, ABCDh, DE2Ah ra
số nhị phân.
4. Biểu diễn các số sau dưới dạng số hex 16 bit: 231; 3245; -37; -198
5. Thực hiện các phép cộng sau:
1001001b + 1000110b
11010000b + 01010011b
B2CDh + 1234h
DEFC1h + AC342h
6. Thực hiện các phép trừ sau:
11011b – 10011b
01110111b – 00101011b
5FFCDh – 345FCh
1234Fh – 0FCD1h
7. Biểu diễn các số được mã hoá dưới dạng ASCII sau ra ký tự:
41 74 74 61 63 6B 20 61 77 6E
8. Để chuyển một chữ cái thành một chữ cái in hoa chứa trong một byte thì cần
phải làm như thế nào? (hãy dựa vào bảng ASCII).
9. Hãy chuyển các số thập phân (09) thành mã ASCII.
10. Hãy biểu diễn tên lớp, họ và tên SV, mã số sinh viên của mình bằng mã ASCII
8bit dưới dạng chuỗi các số hexa.
11. Chuyển đổi các giá trị 56(10) và 45(10) sang các hệ cơ số 2, 8, 16 và thực hiện các
phép toán cộng, trừ, nhân, chia hai số đó. Kiểm tra lại kết quả phép toán ở hệ cơ
số 10.
12. Biểu diễn các số thực ở hệ thập phân sau: 3,25; 4,5; 6,125 bằng số thực có dấu
phảy động 32bit theo tiêu chuẩn IEEE754.
13. Xác định giá trị số thực dưới dạng số thập phân của các số thực có dấu phảy
động 32bit theo tiêu chuẩn IEEE754 sau: BA200000h; 9C500000h.

You might also like