Professional Documents
Culture Documents
Chapter2 DataRepresentation
Chapter2 DataRepresentation
[:-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:
[:-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:
[:-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:
[:-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?
[:-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-:]