You are on page 1of 70

Chương 2: Biểu diễn thông tin

trong máy tính


 Mục đích: tìm hiểu về cơ chế biểu diễn
thông tin trong máy tính; các dạng mã và
cách thức xử lý
 Nội dung:
 1. Hệ nhị phân:
 2. Hệ hexa
 3. Hệ bát phân
 4. Biểu diễn dữ liệu

[:-1-:]
1. Hệ nhị phân
 Khái niệm
 Chuyển đổi thập phân -> nhị phân
 Chuyển đổi nhị phân -> thập phân
 Các phép toán trên Hệ nhị phân

[:-2-:]
1.1. Khái niệm
-- OFF

-- ON

DATA
(dạng ký số nhị phân)

[:-3-:]
1.1. Khái niệm
 Hệ đếm cơ số 2 chỉ có hai con số 0 và 1
 Hệ đếm có trọng số:
 Có vị trí( phải -> trái) càng cao thì có trọng số càng lớn
 Các vị trí có trọng số bằng bậc luỹ thừa của cơ số 2
 Mỗi một con số nhị phân được gọi là một bit (BInary digiT)
 Bit ngoài cùng bên trái là bit có trọng số lớn nhất (MSB, Most Significant
Bit)
 Bit ngoài cùng bên phải là bit có trọng số nhỏ nhất (LSB, Least
Significant Bit)
 Ví dụ:

[:-4-:]
1.2. Chuyển Đổi nhị phân – thập
phân
 (an an-1… a1 a0).(b1…bm)2 = an*2n + an-1*2n-1 +
… + an*21 + a020 + b1*2-1 + … + bm*2-m
 Ví dụ: Biến đổi số nhị phân (11001)2 thành
số thập phân:

[:-5-:]
1.3. Chuyển đổi thập phân sang
nhị phân(1)
 Với phần nguyên:
 Chia số thập phân cho 2
 Ghi phần dư sang một cột và lấy thương số chia tiếp cho cơ số. Lập lại
việc tính toán trên cho đến khi thương số có giá trị 0.
 Đọc và ghi phần dư theo trật tự ngược (từ dưới lên) sẽ được số cần
tìm.
 Với phần lẻ thập phân:
 Số lẻ được nhân với 2
 Ghi lại số nhớ (phần nguyên sau khi nhân) làm một số nhị phân. Lặp
đến khi phần thập phân = 0.
 Số nhị phân phần thập phân được sắp xếp theo chiều thuận

[:-6-:]
1.3. Chuyển đổi thập phân sang
nhị phân(2)
 Ví dụ: số 29.625:
 Phần nguyên: Phần thập phân:

 Kết quả: 1101.101

[:-7-:]
1.4. Các phép toán trên Hệ nhị
phân
 Phép cộng
 Phép trừ
 Phép nhân

[:-8-:]
Phép cộng số học nhị phân
Các nguyên tắc cộng nhị phân cần chú ý:
0+0=0
0+1=1=1+0
1 + 1 = 0, nhớ 1 sang cột kế tiếp bên trái
1 + 1 + 1 = 1, nhớ 1 sang cột kế tiế
Ví dụ: Nhớ 1111
11011
+ 111
100010
[:-9-:]
Phép trừ số học nhị phân
Các nguyên tắc trừ nhị phân cần chú ý:
0-0=0
0 - 1 = 1 (nhớ -1)
1-0=1
1-1=0
-1-1=0 (nhớ -1)
Ví dụ: Nhớ 11011
- 111
10100
[:-10-:]
Phép nhân - Multiplication
Nguyên tắc phép nhân: 10101
0x0=0 x 11001
-------
0x1=0 10101
1x0=0 00000
00000
1x1=1 10101
10101
Ví dụ. 10101 * 11001 -----------
1000001101

[:-11-:]
2. Hệ Thập lục phân -
HexaDecimal
 Khái niệm
 Chuyển đổi Hexa thành thập phân
 Chuyển đổi thập phân thành Hexa
 Chuyển đổi Hexa thành Nhị phân
 Chuyển đổi Nhị phân thành Hexa

[:-12-:]
2.1. Khái niệm
 Hệ thập lục phân là hệ đếm có trọng số với cơ số là 16.
 Dùng các con số từ 0 đến 9 và các ký tự từ A đến F như sau:

[:-13-:]
2.2. Chuyển Hexa sang Thập
phân
 Bằng tổng của các con số nhân với giá trị vị trí
 Ví dụ: (2AF)16 thành thập phân

[:-14-:]
2.3. Chuyển Thập phân sang
Hexa
 Sử dụng phương pháp chia lặp, với cơ số 16
 Ví dụ: Biến đổi (1776)10 thành thập lục phân

[:-15-:]
2.4. Chuyển Hexa sang Nhị phân
 Thay mỗi số Hexa thành từng nhóm4 sô nhị
phân( vì 16=24):
 Với phần nguyên: nếu thiếu thì thêm 0 vào bên trái cho
đủ nhóm 4 số(chieu tu phai sang trai)
 Với phần thập phân: nếu thiếu thì thêm 0 vào bên trai
nhom cuoi cho đủ nhóm 4 sô(chieu trai sang phai)

[:-16-:]
2.5. Chuyển Nhị phân sang Hexa
 Nhóm thành từng nhóm 4 số( vì 16=24):
 Với phần nguyên: chiều từ phải sang trái
 Với phần thập phân: chiều từ trái sang phải
 Thay mỗi nhóm này bằng một số Hexa tương ứng

[:-17-:]
3. Hệ bát phân-Octal
 3.1. Khái niệm
 3.2. Chuyển đổi Bát phân -> Thập phân
 3.3. Chuyển đổi Thập phân -> Bát phân
 3.4. Chuyển Bát phân -> Nhị phân
 2.5. Chuyển Nhị phân -> Bát phân

[:-18-:]
3.1. Khái niệm
 Hệ bát phân có cơ số là 8:
 Bộ ký tự là các số từ 0-7
 Giá trị tăng từ phải qua trái là 1, 8, 64, 512, 4096…

[:-19-:]
3.2. Chuyển đổi Octal -> Thập
phân
 Bằng tổng của các con số nhân với giá trị vị trí
 Ví dụ: Giá trị thập phân của số 1204 hệ bát phân
là:
1204 = (1 * 512) + (2 * 64) + (0 * 8) + (4 * 1) 
= 512 + 128 + 0 + 4 
= 644

[:-20-:]
3.3. Chuyển Thập phân sang
Octal
 Sử dụng phương pháp chia lặp, với cơ số 8
 Sắp xếp các số dư theo chiều ngược được số Octal
 Ví dụ: Biến đổi (1776)8 thành Octal

[:-21-:]
3.4. Chuyển Octal sang Nhị
phân(1)
 Chuyển từ Octal sang Nhị phân và ngược lại dựa
theo bảng sau:
Nhị phân Octal 000 0
001 1
010 2
011 3
100             4
101 5
110             6
111             7
[:-22-:]
3.4. Chuyển Octal sang Nhị
phân(2)
 Thay mỗi số Octal thành từng nhóm3 sô nhị phân(
vì 8=23):
 Với phần nguyên: nếu thiếu thì thêm 0 vào bên trái cho
đủ nhóm 3 số
 Với phần thập phân: nếu thiếu thì thêm 0 vào bên phải
cho đủ nhóm 3 số.

[:-23-:]
3.5. Chuyển Nhị phân sang Octal
 Nhóm thành từng nhóm 3 số( vì 16=23):
 Với phần nguyên: chiều từ phải sang trái
 Với phần thập phân: chiều từ trái sang phải
 Thay mỗi nhóm này bằng một số Octal tương ứng

[:-24-:]
4. Biểu diễn số liệu
 4.1. Biểu diễn số nguyên:
 Không dấu
 Có dấu
 4.2. Các phép toán trên số nguyên
 4.3. Biểu diễn số thực:
 Số có dấu chấm động
 4.4. Biểu diễn ký tự

[:-25-:]
4.1. Biểu diễn số nguyên(1):
Không dấu
 Số nguyên không dấu:
 Tương tự như biểu diễn các mã ký tự
 Các số đều được biểu diễn bằng các chữ số nhị phân.
 Dùng n bit để biểu diễn số nguyên không dấu có độ dài
như sau:

[:-26-:]
4.1. Biểu diễn số nguyên(2):
Không dấu
 Ví dụ 1: Biểu diễn các số nguyên không dấu
sau bằng 8-bit:
 A=41 ; B=150
 Giải:
 A = 41 = 32 + 8 + 1 = 25 + 23 + 20
41 = 0010 1001
 B = 150 = 128 + 16 + 4 + 2 = 27+24+22+21
150 = 1001 0110

[:-27-:]
4.2. Biểu diễn số nguyên(3):
Không dấu
 Ví dụ 2: Cho các số nguyên không dấu M, N được
biểu diễn bằng 8-bit như sau:
 M = 0001 0010
 N = 1011 1001
Xác định giá trị?
 Giải:
 M = 0001 0010 = 24 + 21 = 16 + 2 = 18
 N = 1011 1001 = 27 + 25 + 24 + 23 + 20
= 128 + 32 + 16 + 8 + 1 = 185

[:-28-:]
4.1. Biểu diễn số nguyên(4): Có
dấu
 Số nguyên có dấu:
 Sử dụng bit cao nhất biểu diễn dấu:
 Bit dấu có giá trị 0 tương ứng với số nguyên dương
 Bit dấu có giá trị 1 biểu diễn số âm
 Khoảng giá trị số được biểu diễn sẽ được tính như sau:

[:-29-:]
4.1. Biểu diễn số nguyên(5): Có
dấu
 Cách biểu diễn bằng trị tuyệt đối và dấu:
 Bit dn-1 là bit dấu và các bit từ d0 tới dn-2 cho giá
trị tuyệt đối.
 Một từ n bit tương ứng với số nguyên hệ thập
phân có dấu

[:-30-:]
4.1. Biểu diễn số nguyên(6): Có
dấu
 Số bù một và Số bù hai:
 Giả sử A là một số nhị phân, có:
 Số bù 1 của A nhận được bằng cách đảo giá trị các bit của A
 (Số bù 2 của A) = (Số bù 1 của A) + 1
 Ví dụ: với n= 8 bit
 Giả sử có A = 0010 0101
 Số bù một của A = 1101 1010
 Số bù hai của A = 1101 1011
 Vì A + (Số bù hai của A) = 0 => dùng số bù hai để
biểu diễn cho số âm

[:-31-:]
4.1. Biểu diễn số nguyên(7): Có
dấu
 Biểu diễn số nguyên có dấu bằng mã bù 2
 Nguyên tắc tổng quát: Dùng n bit biểu diễn số
nguyên có dấu A: an-1an-2…a2a1a0
 A là số dương: bit an-1 = 0, các bit còn lại biểu diễn
độ lớn như số không dấu
 A là số âm: được biểu diễn bằng số bù hai của số
dương tương ứng, vì vậy bit an-1 = 1

[:-32-:]
4.1. Biểu diễn số nguyên(8): Có
dấu
 Dạng tổng quát của số dương A:
 0an-2…a2a1a0
 Giá trị của số dương A:

 Dải biểu diễn cho số dương: 0 đến 2n-1-1

[:-33-:]
4.1. Biểu diễn số nguyên(9): Có
dấu
 Dạng tổng quát của số âm A:
 1an-2…a2a1a0
 Giá trị của số âm A:

 Dải biểu diễn cho số âm: -1 đến -2n-1


[:-34-:]
4.1. Biểu diễn số nguyên(10): Có
dấu
 Dạng tổng quát của số nguyên A:
 an-1an-2…a2a1a0
 Giá trị của A được xác định như sau:

 Dải giá trị: từ -(2n-1) đến +(2n-1-1)


[:-35-:]
4.1. Biểu diễn số nguyên(11): Có
dấu
 Ví dụ 1. Biểu diễn các số nguyên có dấu bằng 8 bit
bằng mã bù 2
 A = +58 ; B = -80
 Giải:
 A = +58 = 0011 1010
 B = -80
 Có: +80 = 0101 0000
 Số bù một = 1010 1111
+1
 Số bù hai = 1011 0000
 => B = -80 = 1011 0000

[:-36-:]
4.1. Biểu diễn số nguyên(12): Có
dấu
 Ví dụ 2: Hãy xác định giá trị của các số
nguyên có dấu được biểu diễn dưới đây:
 P = 0110 0010
 Q = 1101 1011
 Giải:
 P = 0110 0010 = 64 + 32 + 2 = +98
 Q = 1101 1011 = -128+64+16+8+2+1 = -37

[:-37-:]
4.1. Biểu diễn số nguyên(12): Có
dấu
 Biểu diễn hằng số thừa K
 Số dương +N có được bằng cách “cộng thêm vào” số
thừa K (Số thừa K được chọn sao cho tổng K và một
số âm bất kỳ luôn luôn dương)
 Số âm –N có được bằng cách lấy K-N (lấy bù hai của
số +N ở trên)
 Ví dụ: Số thừa K=128
 +25 = 10000000+00011001= 10011001
 -25 = 01100111 (mã bù 2)
[:-38-:]
4.1. Biểu diễn số nguyên(13):
Chuyển Byte -> Word
 Đối với số dương:
 +19 = 0001 0011 (8 bit)
 +19 = 0000 0000 0001 0011 (16 bit)
 => thêm 8 bit 0 bên trái
 Đối với số âm:
 - 19 = 1110 1101 (8 bit)
 - 19 = 1111 1111 1110 1101 (16 bit)
 => thêm 8 bit 1 bên trái

[:-39-:]
4.1. Biểu diễn số nguyên(13): Biểu
diễn số nguyên theo mã BCD
 Binary Coded Decimal Code
 Dùng 4 bit để mã hoá cho các chữ số thập phân từ 0
đến 9
 0 0000 5 0101
 1 0001 6 0110
 2 0010 7 0111
 3 0011 8 1000
 4 0100 9 1001
 => Có 6 tổ hợp không sử dụng:
1010, 1011, 1100, 1101, 1110, 1111
[:-40-:]
4.1. Biểu diễn số nguyên(14): Biểu
diễn số nguyên theo mã BCD
 Ví dụ:
 35 = 0011 0101BCD
 61 = 0110 0001BCD
 1087 = 0001 0000 1000 0111BCD
 9640 =1001 0110 0100 0000BCD

[:-41-:]
4.1. Biểu diễn số nguyên(15): Biểu
diễn số nguyên theo mã BCD
 Các kiểu lưu trữ số BCD
 BCD không gói (Unpacked BCD): Mỗi số BCD
 4-bit được lưu trữ trong 4-bit thấp của mỗi byte.
 Ví dụ: Số 35 được lưu trữ như sau:
Ưu điểm?

 BCD gói (Packed BCD):


 Hai số BCD được lưu trữ trong 1 byte.
 Ví dụ: số 35 được lưu trữ như sau:

[:-42-:]
4.2. Các phép toán số học trên số
nguyên(1)
 Phép cộng số nguyên không dấu
 Phép đảo dấu
 Cộng số nguyên có dấu
 Nguyên tắc thực hiện phép trừ
 Nhân số nguyên không dấu
 Nhân số nguyên có dấu
 Chia số nguyên không dấu
 Chia số nguyên có dấu
[:-43-:]
4.2. Các phép toán số học trên số
nguyên(2)- Phép cộng số nguyên
không dấu
 Nguyên tắc cộng số nguyên không dấu:
 Khi cộng hai số nguyên không dấu n-bit, kết
quả nhận được là n-bit:
 Nếu không có nhớ ra khỏi bit cao nhất thì kết
quả nhận được luôn luôn đúng (Cout = 0).
 Nếu có nhớ ra khỏi bit cao nhất thì kết quả
nhận được là sai, => có tràn nhớ ra ngoài
(Carry out = 1)
 Tràn nhớ ra ngoài (Carry Out) xảy ra khi tổng >2n-1

[:-44-:]
4.2. Các phép toán số học trên số
nguyên(3): Cộng 2 số nguyên
không dấu
 Ví dụ cộng số nguyên không dấu

[:-45-:]
4.2. Các phép toán số học trên số
nguyên(4): Phép đảo dấu
 Có:
 + 37 = 0010 0101
 bù 1 = 1101 1010
000000001
 bù 2 = 1101 1011 = -37
 Lấy bù hai của số âm:
 - 37 = 1101 1011
 => bù 1 = 0010 0100
+ 1
 => bù 2 = 0010 0101 = +37
 => Phép đảo dấu trong máy tính thực chất là lấy bù 2( vì A +
bù 2 của A = 0)

[:-46-:]
4.2. Các phép toán số học trên số
nguyên(5): Cộng số nguyên có dấu
 Khi cộng 2 số nguyên có dấu n-bit không quan
tâm đến bit Cout và kết quả nhận được là n-bit:
 Cộng 2 số khác dấu: kết quả luôn luôn đúng.
 Cộng 2 số cùng dấu:
 Nếu dấu kết quả cùng dấu với các số hạng thì kết quả là
đúng.
 Nếu kết quả có dấu ngược lại, khi đó có tràn xảy
ra(Overflow) và kết quả là sai.
 Tràn xảy ra khi tổng nằm ngoài dải biểu diễn
 [-(2n-1),+(2n-1-1)]

[:-47-:]
4.2. Các phép toán số học trên số
nguyên(6): Cộng số nguyên có dấu
 Ví dụ cộng số nguyên có dấu không tràn

[:-48-:]
4.2. Các phép toán số học trên số
nguyên(7): Cộng số nguyên có dấu
 Ví dụ cộng số nguyên có dấu bị tràn

[:-49-:]
4.2. Các phép toán số học trên số
nguyên(8): Phép trừ
 Phép trừ 2 số nguyên: X – Y = X + (-Y)
 Nguyên tắc: Lấy bù hai của Y để được –Y,
rồi cộng với X

[:-50-:]
4.2. Các phép toán số học trên số
nguyên(10): Phép nhân không dấu
 Ví dụ 1011 x 1101 (11 x 13 = 143)

[:-51-:]
4.2. Các phép toán số học trên số
nguyên(11): Nhân số nguyên có dấu
 Phương pháp 1:
 1. Chuyển đổi các thừa số thành số dương
 2. Nhân 2 số dương như số nguyên không dấu
 3. Hiệu chỉnh dấu của kết quả:
 Nếu 2 thừa số cùng dấu => không cần hiệu chỉnh
 Nếu 2 thừa số khác dấu => đảo dấu kết quả bằng
cách lấy bù 2

[:-52-:]
4.3. Biểu diễn số thực(1a)
 Hai cách biểu diễn số thực trong một hệ nhị phân:
 Dấu chấm cố định (fixed point number)
 Dấu chấm động (floating point number)
 Hay được dùng hiện nay có độ chính xác cao
 Cách biểu diễn chung cho mọi hệ đếm:
R = M.BE
 Trong đó:
 M = 1+m
 Trong đó M là phần định trị
 Số E là phần mũ
 B là cơ số của hệ đếm

[:-53-:]
4.3. Biểu diễn số thực 32bit(1b)
 S là bit dấu:
 S = 0 => Số dương
 S = 1 => Số âm
 e (8 bit) là mã excess-127 của phần mũ E:
 e = E + 127 => E = e – 127
 e la phan mu duoc bieu dien trong may
 giá trị 128=27 -1 được gọi là độ lệch (bias)
 m (23 bit) là phần lẻ của phần định trị M:
 M = 1.m
 => Gia tri so = X = (-1)S*1.m*2e-127
[:-54-:]
4.3. Biểu diễn số thực(2): IEEE
 Hai chuẩn định dạng dấu chấm động:
 Chuẩn MSBIN của Microsoft
 Chuẩn IEEE: Institute of Electric & Electronic Engineers
Cả hai chuẩn này đều dùng hệ đếm nhị phân
 IEEE là chuẩn được mọi hãng chấp nhận, được dùng trong
bộ xử lý toán học của Intel

[:-55-:]
4.3. Biểu diễn số thực(3): IEEE

1038?

[:-56-:]
4.3. Biểu diễn số thực(5)
 Phương pháp đổi số thực sang số dấu phẩy động
32 bit:
 Đổi số thập phân thành số nhị phân.
 Biểu diễn số nhị phân dưới dạng 1.xxxBy (B: cơ số 2).
 Bit cao nhất 31: lấy giá trị 0 với số dương, 1 với số âm.
 Phần mũ y đổi sang mã excess -127 của y, được xác
định bằng cách: y + 127
 Phần xxx là phần định trị, được đưa vào từ bit 22..0.

[:-57-:]
4.3. Biểu diễn số thực(6)
 Ví dụ: Biểu diễn số thực (9,75)10 dưới dạng dấu phẩy động.
Đổi sang dạng nhị phân: (9,75)10 = (1001.11)2 =
1,00111B3.

[:-58-:]
4.4. Biểu diễn ký tự(1)
 Bộ mã ASCII (American Standard Code for
Information Interchange)
 Bộ mã Unicode

[:-59-:]
4.4. Biểu diễn ký tự(2): Bảng mã
ASCII
 Là Bộ mã xây dựng để biểu diễn cho các ký tự
chữ, các ký tự số và các ký hiệu đặc biệt
 Các mã đó gọi là Bộ mã ký tự và số
 Bảng mã ASCII là mã 7 bit được dùng phổ biến
trong các hệ máy tính hiện nay:
 Với mã 7 bit nên có 27 = 128 tổ hợp mã.
 Mỗi ký tự (chữ hoa và chữ thường) cũng như các con
số thập phân từ 0..9 và các ký hiệu đặc biệt được biểu
diễn bằng một mã số(là một tổ hợp xâu 8 số nhị phân)

[:-60-:]
4.4. Biểu diễn ký tự(3): Bảng mã
ASCII

[:-61-:]
4.4. Biểu diễn ký tư(4)̣

[:-62-:]
4.4. Biểu diễn ký tư(5)̣
 Các ký tự chuẩn:
 26 chữ cái hoa ‘A’ đến ‘Z’ có mã từ 4116 đến 5A16 (65 đến 90)

‘A’: 0100 0001 = 4116

‘B’: 0100 0010 = 4216
 ...

‘Z’: 0101 1010 = 5A16
 26 chữ cái thường ‘a’ đến ‘z’ có mã từ 6116 đến 7A16 (97 đến
122)

‘a’: 0110 0001 = 6116

‘b’: 0110 0010 = 6216
 ...

‘z’: 0111 1010 = 7A16

[:-63-:]
4.4. Biểu diễn ký tự(6)
 Các ký tự chuẩn:
 10 chữ số thập phân từ 0 đến 9 có mã từ 3016 đến
3916 (48 đến 57)
 ‘0’: 0011 0000 = 3016
 ‘1’: 0011 0001 = 3116
 ‘2’: 0011 0010 = 3216
 ...
 ‘9’: 0011 1001 = 3916

[:-64-:]
4.4. Biểu diễn ký tự(7)
 Một số ký hiệu khác:
 Các dấu câu: . , : ; ...
 Các dấu phép toán: + - * / % ...
 một số ký hiệu thông dụng: &, $, @, #
 dấu cách (space)

[:-65-:]
4.4. Biểu diễn ký tư(8)
 Các mã điều khiển: có mã 0016 ÷ 1F16 và 7F16
 Các mã ký tự điều khiển định dạng (điều khiển màn
hình, máy in …):
 BS, HT, LF, VT, FF, CR
 Các mã ký tự điều khiển truyền tin:
 SOH, STX, ETX, EOT, ENQ, ACK, NAK, SYN, ETB
 Các mã ký tự điều khiển phân cách thông tin:
 FS, GS, RS, US
 Các mã ký tự điều khiển khác:
 NUL, BEL, SO, SI, DLE, DC1+DC4, CAN, EM, SUB, ESC,
DEL

[:-66-:]
4.4. Biểu diễn ký tư(9)
 Các ký tự mở rộng: có mã 8016 ÷ FF16
 Các ký tự mở rộng đượ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 => IBM-PC.
 Bộ mã ký tự mở rộng của Apple => Macintosh.
 Có thể thay đổi các ký tự mở rộng để mã hóa cho các ký tự
riêng của tiếng Việt, ví dụ như bộ mã TCVN3.

[:-67-:]
4.4. Biểu diễn ký tư(6): Bộ mã
hợp nhất Unicode
 Do các hãng máy tính hàng đầu thiết kế
 Bộ mã 16-bit
 Bộ mã đa ngôn ngữ
 Có hỗ trợ các ký tự tiếng Việt

[:-68-:]
4.4. Biểu diễn ký tư(6)̣

[:-69-:]
Q&A

[:-70-:]

You might also like