Professional Documents
Culture Documents
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:
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
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ả
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
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
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 (E7E0) cho số 32 bits và có độ dài
11 bits (E10E0) 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
63 62 52 51 0
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 (E7E0) 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
63 56 55 54 0
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).
M D C 2 0 1 3
4Dh 44h 43h 20h 32h 30h 31h 33h
BÀI TẬP CHƯƠNG I