KIẾN TRÚC VÀ TỔ CHỨC MÁY TÍNH (Computer Organization and Architecture)
Chương 2 Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Nội dung
1. Các hệ đếm cơ bản
2. Biểu diễn số nguyên
3. Các phép toán số học đối với số nguyên
4. Số dấu phẩy động
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 2
2.1. Các hệ đếm cơ bản
(cid:1) Hệ thập phân (Decimal System) → Con người sử
dụng.
(cid:1) Hệ nhị phân (Binary System) → Máy tính sử dụng
(cid:1) Hệ bát phân (Octal System) → Dùng để viết gọn số
nhị phân
(cid:1) Hệ thập lục phân (Hexadecimal System) → Dùng để
viết gọn số nhị phân
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 3
Hệ thập phân (Decimal System)
(cid:1) Cơ số 10
(cid:1) Dùng 10 ký số: 0, 1, 2, ..., 9
(cid:1) Dùng n chữ số thập phân có thể biểu diễn được 10n
giá trị khác nhau:
• 00...0 = 0
• 99...9 = 10n – 1
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 4
Hệ thập phân (tt)
(cid:1) Quy tắc đếm
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 5
Ví dụ
215.37 = 2*102 + 1*101 + 5*100 + 3*10-1 + 7*10-2
(cid:1) Các chữ số phần nguyên: dư 5 215 : 10 = 21 dư 1 21 : 10 = 2 dư 2 2 : 10 = 0
(cid:1) Các chữ số phần thập phân:
0.37 * 10 = 3.7 0.7 * 10 = 7.0
phần nguyên = 3 phần nguyên = 7
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 6
Hệ nhị phân (Binary System)
(cid:1)Cơ số 2
(cid:1)Dùng 2 chữ số: 0, 1
(cid:1)Chữ số nhị phân gọi là bit (binary digit)
(cid:1)Bit là đơn vị thông tin nhỏ nhất
(cid:1)Dùng n chữ số nhị phân có thể biểu diễn được
2n giá trị khác nhau:
00...0 = 0
11...1 = 2n - 1
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 7
Hệ nhị phân (tt)
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 8
Hệ nhị phân (tt) (cid:1) Quy tắc đếm
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 9
Ví dụ
(cid:1) Có số nhị phân như sau: 1011 1001.101(2) (cid:1) Khi đó, giá trị của chúng được tính là:
1011 1001.101(2) =
= 27 + 25 + 24 + 23 + 20 + 2-1 + 2-3
= 128 + 32 + 16 + 8 + 1 + 0.5 + 0.125
= 185.625(10)
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 10
Hệ Bát phân (Octal System)
(cid:1)Cơ số 8
(cid:1)Dùng 8 chữ số: 0, 1, 2, 3, 4, 5, 6, 7
(cid:1)Dùng n chữ số bát phân có thể biểu diễn được 8n
giá trị khác nhau:
• 00...0 = 0
• 77...7 = 8n – 1
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 11
Hệ bát phân (tt) (cid:1) Quy tắc đếm
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 12
Hệ thập lục phân (Hexadecimal System)
(cid:1)Cơ số 16 (cid:1)Dùng 16 chữ số: 0,1,..., 9, A, B, ..., F (cid:1)Dùng để viết gọn cho số nhị phân: cứ một nhóm 4 bit sẽ được thay bằng một chữ số
Hexa
(cid:1)Dùng n chữ số Hexa có thể biểu diễn được
16n giá trị khác nhau:
• 00...0 = 0
• FF...F = 16n - 1
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 13
Hệ thập lục phân (tt)
(cid:1) Quy tắc đếm
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 14
Tổng quát
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 15
Chuyển đổi giữa các hệ đếm
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 16
Bảng mã 8421
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 17
Chuyển đổi tổng quát
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 18
Phương pháp ghép nhóm
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 19
Chuyển đổi số thập phân → nhị phân
(cid:1) Chuyển đổi phần nguyên:
– Cách 1: Chia liên tiếp cho 2 rồi lấy phần dư – Cách 2: Phân tích thành tổng các luỹ thừa của 2
(cid:1) Chuyển đổi phần thập phân:
– Nhân phần thập phân với 2, lấy phần nguyên
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 20
Ví dụ chuyển đổi
(cid:1)Có số ở hệ thập phân như sau: 61.3125
– Chuyển đổi phần nguyên: 61(10) = 111101(2)
– Chuyển đổi phần thập phân:
• 0.3125 * 2 = 0.625 • 0.625 * 2 = 1.25 • 0.25 * 2 = 0.5 • 0.5 * 2 = 1.0
phần nguyên = 0 phần nguyên = 1 phần nguyên = 0 phần nguyên = 1
– Vậy: 61.3125(10) = 111101.0101(2)
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 21
Mã hoá dữ liệu trong máy tính
(cid:1) Nguyên tắc chung
– Mọi dữ liệu đưa vào máy tính đều phải được mã hoá
thành số nhị phân
– Các loại dữ liệu:
• Dữ liệu nhân tạo: do con người quy ước
• Dữ liệu tự nhiên: tồn tại khách quan với con người
(cid:1) Mã hoá dữ liệu nhân tạo:
• Dữ liệu dạng số: mã hoá theo chuẩn quy ước
• Dữ liệu ký tự: mã hoá theo bộ mã ký tự
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 22
Mã hoá dữ liệu trong máy tính (tt)
(cid:1) Mã hoá và tái tạo tín hiệu tự nhiên
TH Ltục
TH V.lý
TH số
ADC
Bộ tạo tín hiệu
MT
TH V.lý
TH Ltục
TH số
DAC
Bộ tái tạo tín hiệu
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 23
Mã hoá dữ liệu trong máy tính (tt)
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 24
Mã hoá dữ liệu trong máy tính (tt)
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 25
Lưu trữ dữ liệu trong máy tính
(cid:1)Bộ nhớ chính được tổ chức theo byte
(cid:1)Độ dài dữ liệu có thể chiếm 1 hay nhiều byte
(cid:1)Có 2 cách lưu trữ các byte trong bộ nhớ chính:
– Little-endian (đầu nhỏ): byte có ý nghĩa thấp
hơn được lưu trữ ở vị trí có địa chỉ nhỏ hơn
– Big-endian (đầu to): byte có ý nghĩa thấp hơn
được lưu trữ ở vị trí có địa chỉ lớn hơn
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 26
Ví dụ lưu trữ dữ liệu 32 bit
12
34
56
78
Địa chỉ
Địa chỉ
. . .
. . .
X
X
78
12
X +1
X +1
56
34
X + 2
X + 2
34
56
X + 3
X + 3
12
78
. . .
. . .
đầu nhỏ
đầu to
đầu nhỏ đầu to
Ví dụ: Intel 80x86, Px: Motorola 680x0: Power PC, Itanium: cả hai loại
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 27
2.2. Biểu diễn số nguyên
(cid:1) Số nguyên không dấu (unsigned integer)
(cid:1) Số nguyên có dấu (signed integer)
(cid:1) Chuyển đổi độ dài
(cid:1) Bài tập
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 28
Số nguyên không dấu
(cid:1)Nguyên tắc chung
– Dùng n chữ số nhị phân thì biểu diễn được 2n số
– Dải biểu diễn: 0 ÷ 2n – 1
– Ví dụ:
• n = 8 bit: Dải biểu diễn: 0 ÷ 28 -1, hay 0 ÷ 255
• n = 16 bit: Dải biểu diễn: 0 ÷ 216 - 1, hay 0 ÷ 65535
• n = 32 bit: Dải biểu diễn: 0 ÷ 232 – 1, 0÷4294967295
(cid:1)Cách biểu diễn
– Biểu diễn ở dạng nhị phân một cách bình thường
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 29
Hiện tượng tràn số
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 30
Các ví dụ
(cid:1) Ví dụ 1: biểu diễn các số nguyên không dấu sau đây
dùng 8 bit:
A = 73;
B = 138
(cid:1) Giải:
– A = 73 = 64 + 8 + 1 = 26 + 23 + 20
73 = 0100 1001
– B = 138 = 128 + 8 + 2 = 27 + 23 + 21
138 = 1000 1010
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 31
Các ví dụ (tt)
(cid:1) Ví dụ 2: Hãy xác định giá trị của các số nguyên
không dấu C, D được biểu diễn bằng 8 bit như sau:
C = 0010 1010;
D = 1010 0110
(cid:1) Giải:
– C = 0010 1010 = 25 + 23 + 21 = 32 + 8 + 2 = 42
– D = 1010 0110 = 27 + 25 + 22 + 21 =
= 128 + 32 + 4 + 2 = 166
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 32
Số nguyên có dấu (cid:1) Nguyên tắc chung
– Dùng n chữ số nhị phân thì biểu diễn được 2n số
– Dải biểu diễn: - 2n-1 ÷ 2n-1 – 1
– Ví dụ:
• n = 8 bit: Dải biểu diễn: - 27 ÷ 27 -1, hay -128 ÷ 127
• n = 16 bit: - 215 ÷ 215 - 1, hay - 32768 ÷ 32767
• n = 32 bit: - 231 ÷ 231 - 1, hay - 2147483648 ÷ 2147483647
(cid:1) Cách biểu diễn:
– PP1: Dùng dấu và độ lớn (Sign-Magnitude)
– PP2: Dùng mã bù 2 (Two’s complement)
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 33
Dùng dấu và độ lớn
(cid:1)Bit lớn nhất biểu diễn dấu:
– 0: biểu diễn số dương
– 1: biểu diễn số âm
(cid:1)Các bit còn lại biểu diễn giá trị
– Ví dụ:
+23 = 0001 0111; -23 = 1001 0111
(cid:1)Vấn đề nảy sinh
– Cần quan tâm cả phần dấu và phần độ lớn khi
thực hiện các phép toán số học
– Có đến 2 cách biểu diễn cho số 0 (+0 và -0)
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 34
Dùng mã bù 2
(cid:1)Đối với số dương: biểu diễn dạng nhị phân (cid:1)Đối với số âm: tìm số bù 2:
– B1: đổi số dương tương ứng → nhị phân
– B2: tìm số bù 1 (đảo bit 1 → 0, 0 → 1)
– B3: tìm số bù 2: số bù 1 cộng với 1
Số bù 2 thu được chính là cách biểu diễn số âm
(cid:1)Đặc điểm:
– Thực hiện các phép toán số học dễ dàng
– Chỉ có một sự biểu diễn duy nhất cho số 0
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 35
Dùng mã bù 2 (tt)
(cid:1) Dạng tổng quát của số nguyên A
A = an-1an-2….a2a1a0
(cid:1) Giá trị của A được tính bởi công thức:
(cid:1) Dải giá trị của số nguyên sử dụng n bit:
-2n-1 ÷ 2n-1 – 1
- 8 bit: - 16 bit: - 32 bit:
-128 ÷ 127 -32 768 ÷ 32 767 -2 147 483 648 ÷ 2 147 483 647
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 36
Các ví dụ
(cid:1) Ví dụ 1: Biểu diễn các số nguyên có dấu sau đây
bằng 8 bit: A = + 69; B = - 92
(cid:1) Giải:
A = + 69 = 0100 0101 B = - 92 Ta có: + 92 = 0101 1100
+
Số bù 1 = 1010 0011 1 Số bù 2 = 1010 0100
Vậy: B = -92 = 1010 0100
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 37
Các ví dụ
(cid:1) Ví dụ 2: Xác định giá trị của các số nguyên có dấu
biểu diễn dưới đây (dùng dấu - độ lớn):
C = 0110 1010;
D = 1100 0011
(cid:1) Giải:
C = 0110 1010 = + (64 + 32 + 8 + 2) = 106 D = 1100 0011 = - (64 + 2 + 1) = - 67
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 38
Các ví dụ
(cid:1) Ví dụ 3: Xác định giá trị của các số nguyên có dấu
được biểu diễn dưới đây (dùng mã bù 2):
E = 0101 1110;
F = 1101 1010
(cid:1) Giải:
E = 0101 1110 = 64 + 16 + 8 + 4 + 2 = 94
F = 1101 1010 = -128 + 64 + 16 + 8 + 2 = -38
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 39
Chuyển đổi độ dài (byte(cid:2)word) (cid:1) Đối với số dương: thêm/bớt số 0 ở trước:
0001 0111 +23 = +23 = 0000 0000 0001 0111
(8 bit) (16 bit)
(cid:1) Đối với số âm: thêm/bớt số 1 ở trước
1110 1001 -23 = -23 = 1111 1111 1110 1001
(8 bit) (16 bit)
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 40
Biểu diễn số nguyên theo mã BCD
(cid:1) BCD – Binary Coded Decimal
– Được dùng để tính toán số thập phân trong hệ nhị
phân
– Là số viết theo hệ cơ số 16 nhưng tính theo hệ cơ số
10
(cid:2) trong hệ nhị phân là 0001 0010 (cid:2) có giá trị là
• 12BCD
12 chứ không phải giá trị 18 (1216 = 18)
• Dùng 4 bit để mã hóa cho các chữ số thập phân từ 0…9
(xem lại bảng mã 8421 phần các số từ 0-9)
• Có 6 tổ hợp bit không sử dụng:
1010; 1011; 1100; 1101; 1110; 1111
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 41
Các kiểu lưu trữ số BCD (cid:1) BCD không gói (unpacked BCD)
– Mỗi số BCD-4bit được lưu trữ trong 4 bit thấp của byte – Ví dụ: Số 35 được lưu trong 2 byte
0 0 1 1
0 1 0 1
(cid:1) BCD gói (packed BCD)
– Hai số BCD-4bit được lưu chung trong 1 byte – Ví dụ: Số 35 được lưu trong 1 byte
0 0 1 1 0 1 0 1
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 42
2.3. Các phép toán trên số nguyên
(cid:1) Phép cộng: thực hiện như cách tính tay thông
thường nhưng ở hệ nhị phân Cộng Kết quả
Nhớ
0 + 0
0
0
0 + 1
1
0
1 + 0
1
0
1 + 1
1
0 (cid:1) Phép trừ: Thực hiện bằng cách cộng số bị trừ với bù
2 của số trừ – Ví dụ: A=1001, B=0011 có bù hai là 1101 – Vậy A-B = 1001+1101 = (1)0110 . Số (1) là số nhớ
(carry)
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 43
Bài tập
1. Số nhị phân 8 bit (11001100), số này tương ứng với số nguyên thập phân có dấu là bao nhiêu nếu số trên được biểu diễn ở dạng:
- Số bù 1. - Số bù 2.
ra số thập phân. ra số nhị phân 16 bits. ra số nhị phân.
2. Đổi các số sau đây: a. (011011)2 b. (-2005)10 c. (55.875)10
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 44
2.3. Các phép toán trên số nguyên (tt)
(cid:1) Phép nhân số không dấu: – Giải thuật nhân số n bit a) Đặt bộ đếm tới n b) Xoá thanh ghi 2n bit chứa tích thành phần; Nhớ ← 0 c) Kiểm tra bit LSB của số nhân; nếu là 1 thì cộng số bị nhân vào n bit nhiều ý nghĩa nhất của tích thành phần
d) Dịch phải Nhớ, Tích thành phần, Số nhân đi 1 bit e) Giảm bộ đếm đi 1. Lặp lại các bước từ c cho đến khi bộ đếm bằng không. Đọc kết quả từ thanh ghi tích thành phần
(cid:1) Ví dụ: 10 x 13
– Số bị nhân: 10(10) = 1010 (2) – Số nhân: 13(10) = 1101(2)
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 45
Giải thuật nhân số không dấu
Start
C:=0; A:=0; Bé ®Õm:=n M chøa sè bÞ nh©n Q chøa sè nh©n
§óng
Q0 = 1?
Sai
C,A:=A+M
DÞch ph¶i C, A, Q Dec(Bé ®Õm)
Sai
§óng
Bé ®Õm = 0?
End
TÝch chøa trong A,Q
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 46
Sơ đồ mạch nhân
Sè bÞ nh©n Mn-1 . . . M0
Céng
Bé céng n bit
Logic ®iÒu khiÓn dÞch vµ céng
DÞch ph¶i
C
An-1 . . . A0
Qn-1 . . . Q0 Sè nh©n
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 47
Ví dụ: 13 x 10
Bước
B.đếm Số nhân Nhớ
Tích thành phần
Vòng lặp
Ghi chú
(a) và (b)
4
1101
0
0000 0000
Khởi trị,LSB=1
(c)
4
1101
0
1010 0000
Cộng 1010
1
0
0101 0000
Dịch phải
1
(d)
4
0110
3
0110
0
0101 0000
Giảm n
1
(e)
(c)
3
0110
0
0101 0000
LSB=0
2
0
0010 1000
Dịch phải
2
(d)
3
0011
(e)
2
0011
0
0010 1000
Giảm n, LSB=1
2
1100 1000
Cộng 1010
3
(c)
2
0011
0
(d)
2
0001
0
0110 0100
Dịch phải
3
0
0110 0100
Giảm n, LSB=1
3
(e)
1
0001
(c)
1
0001
1
0000 0100
Cộng 1010
4
1000 0010
Dịch phải
4
(d)
1
0000
0
(e)
0
0000
0
1000 0010
Giảm n. Dừng
4
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 48
2.3. Các phép toán trên số nguyên (tt)
(cid:1) Phép nhân số có dấu:
– Giải pháp 1:
• Chuyển đổi thành số dương nếu cần • Thực hiện phép nhân như đối với số không dấu • Kiểm tra bit dấu của 2 số, nếu chúng trái dấu thì tích là
số âm.
– Giải pháp 2: sử dụng thuật toán Booth kinh điển (có thể áp dụng cho 2 số dương, một số âm và một dương hoặc cả 2 số đều âm).
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 49
Giải thuật Booth
Start
A:=0; Q-1:=0; Bé ®Õm:=n M chøa sè bÞ nh©n Q chøa sè nh©n
= 01
= 10
Q0, Q-1
A := A - M
A := A + M
= 11 = 00
DÞch ph¶i A, Q, Q-1 Dec(Bé ®Õm)
L−u ý: An-1 ®−îc t¸i t¹o
§óng
Sai
Bé ®Õm = 0?
End
TÝch chøa trong A,Q
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 50
Ví dụ 1: -7 x 3 = -21
A 0000
Q(SN) 0011
Q-1 0
M(SBN) 1001
Khởi tạo Count = 4
Lần 1, Count = 3
0111 0011
0011 1001
1001 1001
0 1
A ← A - M SHR A, Q, Q-1
Lần 2, Count = 2
0001
1100
1001
1
SHR A, Q, Q-1
Lần 3, Count = 1
1010 1101
1100 0110
1001 1001
1 0
A ← A + M SHR A, Q, Q-1
Lần 4, Count = 0
1110
1011
1001
0
SHR A, Q, Q-1
Kết quả: 1110 1011 (dạng bù 2 của 21)
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 51
Ví dụ 2: -5 x -6 = +30
A 0000
Q(SN) 1010
Q-1 0
M(SBN) 1011
Khởi tạo Count = 4
1011
0
0000
0101
SHR A, Q, Q-1
Lần 1, Count = 3
Lần 2, Count = 2
0101 0010
1011 1011
0101 1010
0 1
A ← A - M SHR A, Q, Q-1
Lần 3, Count = 1
1011 1011
1101 1110
1010 1101
1 0
A ← A + M SHR A, Q, Q-1
Lần 4, Count = 0
1011 1011
0011 0001
1101 1110
0 1
A ← A - M SHR A, Q, Q-1
Kết quả: 0001 1110
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 52
Ví dụ 3: 7 x 3 = 21
A 0000
Q(SN) 0011
Q-1 0
M(SBN) 0111
Khởi tạo Count = 4
Lần 1, Count = 3
1001 1100
0011 1001
0111 0111
0 1
A ← A - M SHR A, Q, Q-1
1110
0100
0111
1
Lần 2, Count = 2
SHR A, Q, Q-1
Lần 3, Count = 1
0111 0111
1 0
0101 0010
0100 1010
A ← A + M SHR A, Q, Q-1
0001
0101
0111
0
SHR A, Q, Q-1
Lần 4, Count = 0
Kết quả: 0001 0101
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 53
2.3. Các phép toán trên số nguyên (tt)
(cid:1) Phép chia số nhị phân
1. Nạp số chia vào thanh ghi M và số bị chia vào các thanh ghi A, Q. Số bị chia phải ở dạng 2n bit, vì vậy, ví dụ số 4 bit 0111 trở thành 00000111 và 1001 trở thành 11111001 2. Dịch trái A, Q đi 1 bit 3. Nếu M và A có cùng dấu, thực hiện gán A←A-M, ngược
4.
lại gán A ← A+M thao tác trên thành công nếu dấu của A là như nhau trước và sau thao tác a. Nếu thao tác thành công hoặc (A=0 và Q=0) thì đặt Q0 ← 1 b. Nếu thao tác không thành công và (A≠0 hoặc Q ≠ 0) thì đặt Q0 ← 0 và khôi phục giá trị trước đó của A
5. Lặp lại bước 2 đến bước 4 số lần lặp bằng số bit của Q 6. Phần dư là A. Nếu dấu của số chia và số bị chia giống
nhau thì thương là Q, ngược lại thương là số bù 2 của Q.
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 54
Thuật toán chia số nhị phân
Start
Bé ®Õm := n M chøa sè chia (n bit) A,Q chøa sè bÞ chia (2n bit)
DÞch tr¸i A,Q ®i 1 bit B := A
§óng
Sai
M, A cïng dÊu?
A := A - M
A := A + M
§óng
Sai
A, B cïng dÊu hoÆc A = Q = 0?
Q0 = 1
Q0 = 0; A := B
Dec(Bé ®Õm)
§óng
Sai
Bé ®Õm = 0?
End
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 55
Ví dụ 1: 12 : 4 = 3, dư 0
A
Q
M = 0100 (sè chia)
0000
1100
Khëi t¹o gi¸ trÞ (sè chia vµ bÞ chia cïng dÊu)
0001
1000
1101
0001
1000
0011
0000
1110
0011
0000
0110
0000
0010
0010
0001
0100
0010
0000
0000
0011
DÞch tr¸i 1 bit A, Q M cïng dÊu A → A := A - M A kh¸c dÊu sau khi trõ → Q0 = 0 vµ phôc håi A DÞch tr¸i 1 bit A, Q M cïng dÊu A → A := A - M A kh¸c dÊu sau khi trõ → Q0 = 0 vµ phôc håi A DÞch tr¸i 1 bit A, Q M cïng dÊu A → A := A - M A cïng dÊu sau khi trõ → Q0 = 1 DÞch tr¸i 1 bit A, Q M cïng dÊu A → A := A – M A cïng dÊu sau khi trõ → Q0 = 1. A chøa d, Q chøa th¬ng
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 56
Ví dụ 2: 13 : (-4) = -3, dư 1
Q
M = 1100 (sè chia)
A
0000
1101
Khëi t¹o gi¸ trÞ (sè chia vµ bÞ chia kh¸c dÊu)
0001
1010
1101
0001
1010
0011
0100
1111
0011
0100
0110
1000
0010
0010
1001
0101
0010
0001
0001
0011
DÞch tr¸i 1 bit A, Q M kh¸c dÊu A → A := A + M A kh¸c dÊu sau khi céng → Q0 = 0 vµ phôc håi A DÞch tr¸i 1 bit A, Q M kh¸c dÊu A → A := A + M A kh¸c dÊu sau khi céng → Q0 = 0 vµ phôc håi A DÞch tr¸i 1 bit A, Q M kh¸c dÊu A → A := A + M A cïng dÊu sau khi céng → Q0 = 1 DÞch tr¸i 1 bit A, Q M kh¸c dÊu A → A := A + M A cïng dÊu sau khi céng → Q0=1. A chøa d, Q chøa bï 2 cña th¬ng
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 57
Ví dụ 3: (-11) : 3 = (-3), dư (-2)
Q
M = 0011 (sè chia)
A
1111
0101
Khëi t¹o gi¸ trÞ (sè chia vµ bÞ chia kh¸c dÊu)
1110
1010
0001
1110
1010
1101
0100
0000
1101
0100
1010
1000
1101
1101
1001
1011
0010
1110
1110
0011
DÞch tr¸i 1 bit A, Q M kh¸c dÊu A → A := A + M A kh¸c dÊu sau khi céng → Q0 = 0 vµ phôc håi A DÞch tr¸i 1 bit A, Q M kh¸c dÊu A → A := A + M A kh¸c dÊu sau khi céng → Q0 = 0 vµ phôc håi A DÞch tr¸i 1 bit A, Q M kh¸c dÊu A → A := A + M A cïng dÊu sau khi céng → Q0 = 1 DÞch tr¸i 1 bit A, Q M kh¸c dÊu A → A := A + M A cïng dÊu sau khi céng → Q0=1. A chøa d, Q chøa bï 2 cña th¬ng
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 58
Ví dụ 4: (-14) : (-6) = 2, dư (-2)
A
Q
M = 1010 (sè chia)
1111
0010
Khëi t¹o gi¸ trÞ (sè chia vµ bÞ chia cïng dÊu)
1110
0100
0100
1110
0100
1100
1000
0000
1100
1000
1001
0000
1111
1111
0001
1110
0010
0100
1110
0010
DÞch tr¸i 1 bit A, Q M cïng dÊu A → A := A - M A kh¸c dÊu sau khi trõ → Q0 = 0 vµ phôc håi A DÞch tr¸i 1 bit A, Q M cïng dÊu A → A := A - M A kh¸c dÊu sau khi trõ → Q0 = 0 vµ phôc håi A DÞch tr¸i 1 bit A, Q M cïng dÊu A → A := A + M A cïng dÊu sau khi céng → Q0 = 1 DÞch tr¸i 1 bit A, Q M cïng dÊu A → A := A - M A kh¸c dÊu sau khi céng → Q0= 0. A chøa d, Q chøa cña th¬ng
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 59
2.4. Số dấu phẩy động
(cid:1) Số dấu phẩy động (floating point) dùng để tính
toán trên số thực – Một số thực X được biểu diễn theo kiểu dấu phẩy động
như sau:
(cid:1) = ± (cid:5) ∗ (cid:7)±(cid:8)
– Với:
• m là phần định trị (mantissa) • B là cơ số (base) • e là phần mũ (exponent)
– Mantissa quyết định độ chính xác – Exponent quyết định độ lớn/nhỏ của số
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 60
2.4. Số dấu phẩy động (tt) (cid:1) Một số có nhiều dạng biểu diễn
– Khó xử lý – Cần có sự chuẩn hóa
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 61
Chuẩn IEEE 754/85
(cid:1) Số dấu phẩy động chính xác đơn (single precision)
– Sử dụng 32 bit, độ lệch mũ (bias) = 127 – Công thức tính giá trị: −1(cid:11) ∗ 1. (cid:5) ∗ 2(cid:8)(cid:14)(cid:15)(cid:16)(cid:17)
(cid:1) Số dấu phẩy động chính xác kép (double precision)
– Sử dụng 64 bit, độ lệch mũ (bias) = 1023 – Công thức tính giá trị: −1(cid:11) ∗ 1. (cid:5) ∗ 2(cid:8)(cid:14)(cid:15)(cid:18)(cid:16)(cid:19)
(cid:1) Số dấu phẩy động chính xác kép mở rộng (double-
extended precision) – Sử dụng 80 bit, độ lệch mũ (bias) = 16383 – Công thức tính giá trị: −1(cid:11) ∗ 1. (cid:5) ∗ 2(cid:8)(cid:14)(cid:15)(cid:20)(cid:19)(cid:21)(cid:19)
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 62
Chuẩn IEEE 754/85 (32 bit)
31 30 23 22 0
S (dÊu)
E (phÇn mò)
M (phÇn ®Þnh trÞ)
1 bit
8 bit
23 bit
(cid:1)Khi đó, 1 số thực bất kỳ được biểu diễn:
X = −1(cid:11) ∗ 1. (cid:22) ∗ 2(cid:8)(cid:14)(cid:15)(cid:16)(cid:17)
(cid:1)Dải giá trị biểu diễn:
2-127 < X < 2127, hay: 10-38 < X < 1038
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 63
Chuyển đổi → IEEE 754/85 (32 bit)
(cid:1)Bước 1: Đổi số thực đó → nhị phân
(cid:1)Bước 2: Chuyển về dạng: ±1,aa...a * 2b
(cid:1)Bước 3: Xác định các giá trị:
S = 0 nếu số dương; S = 1 nếu số âm E – 127 = b ⇒ E = 127 + b → nhị phân M = aa...a00...0
23 bit
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 64
(±1.aa...a * 2b)
Chuyển đổi → IEEE 754/85 (32 bit) (cid:1)Ví dụ 1: 17.625 → IEEE 754/85 – Bước 1: A = 17.625 = 10001.101 – Bước 2: A = 1.0001101 * 24 – Bước 3:
• S = 0 (vì A > 0) • E – 127 = 4 ⇒ E = 131 = 1000 0011 • M = 000 1101 0000 0000 0000 0000
⇒ A = 0100 0001 1000 1101 0000 0000 0000 0000
= 41 8D 00 00H
(±1,aa...a * 2b)
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 65
Chuyển đổi → IEEE 754/85 (32 bit) (cid:1)Ví dụ 2: -112.3125 → IEEE 754/85 – Bước 1: B = -112.3125 = -1110000.0101 – Bước 2: B = -1,1100000101 * 26 – Bước 3:
• S = 1, do B < 0 • E – 127 = 6 ⇒ E = 133 = 1000 0101 • M = 110 0000 1010 0000 0000 0000 ⇒ A = 1100 0010 1110 0000 1010 0000 0000 0000
= C2 E0 A0 00H
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 66
Chuyển đổi → IEEE 754/85 (32 bit) (cid:1)Ví dụ 3: -19 / 64 → IEEE 754/85 – B1: C = -19 / 64 = -19 * (1 / 64) – B2: C = -10011 * 2-6 = -1.0011 * 2-2 – B3: Ta có:
• S = 1, vì C < 0 • E – 127 = -2 ⇒ E = 125 = 0111 1100 • M = 001 1000 0000 0000 0000 0000
⇒ A = 1011 1110 0001 1000 0000 0000 0000 0000
= BE 18 00 00H
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 67
Chuyển đổi → IEEE 754/85 (32 bit)
(cid:1)Ví dụ 4: Tìm giá trị số thực: C2 0D 00 00H (cid:1)Giải
X = C2 0D 00 00H = = 1100 0010 0000 1101 0000 0000 0000 0000 – S = 1 ⇒ X < 0 – E = 1000 0100 = 132 ⇒ E -127 = 5 – M = 000 1101 0000 0000 0000 0000
⇒ X = -1.0001101 * 25 = -100011.01 = -35,25
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 68
Chuẩn IEEE 754/85 (64bit)
63 62 52 51 0
S (dÊu)
E (phÇn mò)
M (phÇn ®Þnh trÞ)
1 bit
11 bit
52 bit
(cid:1)Khi đó, 1 số thực bất kỳ được biểu diễn:
X = −1(cid:11) ∗ 1. (cid:22) ∗ 2(cid:8)(cid:14)(cid:15)(cid:18)(cid:16)(cid:19)
(cid:1)Dải giá trị biểu diễn:
2-1023 < X < 21023 hay: 10-308 < X < 10308
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 69
Chuẩn IEEE 754/85 (64bit)
79 78 64 63 0
S (dÊu)
E (phÇn mò)
M (phÇn ®Þnh trÞ)
1 bit
15 bit
64 bit
(cid:1)Khi đó, 1 số thực bất kỳ được biểu diễn:
X = −1(cid:11) ∗ 1. (cid:22) ∗ 2(cid:8)(cid:14)(cid:15)(cid:20) (cid:19)(cid:21)(cid:19)
(cid:1)Dải giá trị biểu diễn:
2-16 383 < X < 216 383 hay: 10-4 932 < X < 104 932
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 70
Các quy ước đặc biệt
(cid:1) E = 0, M = 0 → X = 0
x000 0000 0000 0000 0000 0000 0000 0000 = ±0
(cid:1) E = 11...1, M = 0 → X = ±∞
x111 1111 1000 0000 0000 0000 0000 0000 = ±∞
(cid:1) E = 11...1, M ≠ 0 → X: NaN (Not a Number)
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 71
Biểu diễn ký tự (cid:1) Bộ mã ASCII
(American Standard Code for
Information Interchange)
(cid:1) Bộ mã Unicode
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 72
Bộ mã ASCII
(cid:1)Do ANSI (American National Standard Institute)
thiết kế
(cid:1)Là bộ mã 8 bit, có thể mã hóa được 28 ký tự, có
mã từ 0016 ÷ FF16 , gồm: – 128 ký tự chuẩn, có mã 0016 ÷ 7F16, gồm:
• Các ký tự điều khiển: màn hình, máy tin, truyền tin. • Các ký tự soạn thảo văn bản
– 128 ký tự mở rộng, có mã 8016 ÷ FF16, gồm: – Các ký tự đặc biệt, kẻ khung, tiếng Pháp, ...
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 73
Bộ mã Unicode
(cid:1) Là bộ mã hợp nhất, do các hãng máy tính hàng đầu
thiết kế
(cid:1) Là bộ mã 16 bit
(cid:1) Là bộ mã đa ngôn ngữ
(cid:1) Có hỗ trợ các ký tự tiếng Việt
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 74
bangtqh@utc2.edu.vn
Bài tập (các hệ đếm)
(cid:1) Bài 1: Đổi các số sau từ hệ thập phân → hệ nhị phân:
a) 28; d) 34,5;
b) 89; e) 55,25;
c) 294 f) 46,3125
(cid:1) Bài 2: Đổi các số sau từ hệ nhị phân → hệ thập phân:
a) 11001; c) 10111011;
b) 111001 d) 10001001
(cid:1) Bài 3: Đổi các số sau từ hệ thập phân → hệ thập lục:
a) 68;
b) 29;
c) 215
(cid:1) Bài 4: Đổi các số sau từ hệ thập lục → hệ thập phân:
a) AF;
b) 123;
c) 10D
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 76
Bài tập (biểu diễn số nguyên)
(cid:1) Bài 1: Biểu diễn các số sau dùng dấu và độ lớn (8
bit):
a) +69;
b) +105;
c) -28;
d) -121
(cid:1) Bài 2: Biểu diễn các số sau dùng dấu và độ lớn (16
bit):
a) +109;
b) +105;
c) -98;
d) -131
(cid:1) Bài 3: Biểu diễn các số sau dùng mã bù 2 (8 bit –
b) 48;
c) 98;
d) 131
không dấu): a) 57;
(cid:1) Bài 4: Biểu diễn các số sau dùng mã bù 2 (8 bit – có
dấu):
a) +57;
b) +48;
c) -98;
d) -31
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 77
Bài tập (biểu diễn số nguyên)
(cid:1) Bài 5: Biểu diễn các số sau dùng mã bù 2 (16 bit –
không dấu): a) 157;
b) 108;
c) 128;
d) 35
(cid:1) Bài 6: Biểu diễn các số sau dùng mã bù 2 (16 bit –
có dấu): a) 137;
b) 119;
c) -113;
d) -53
(cid:1) Bài 7: Có các biểu diễn sau (dùng dấu và độ lớn), hãy
xác định giá trị của chúng:
a) 0100 1011
b) 1001 1100
c) 0000 0000 1001 0010;
d) 1000 0000 0110 1100
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 78
Bài tập (biểu diễn số nguyên)
(cid:1) Bài 8: Có các biểu diễn sau (dùng mã bù 2 – không
dấu), hãy xác định giá trị: a) 0100 001 c) 0000 0000 1001 0010;
b) 1010 0100 d) 1000 0000 0010 0100
(cid:1) Bài 9: Có các biểu diễn sau (dùng mã bù 2 – có dấu),
hãy xác định giá trị của chúng:
a) 0100 1011 b) 1101 1100 c) 0000 0000 0101 0011 d) 1111 1111 1110 1110
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 79
Bài tập (các phép toán với số nguyên)
(cid:1) Bài 1: Cho biết kết quả khi thực hiện trên máy tính
các phép cộng sau (8 bit) và giải thích: a) 56 + 78 (không dấu); c) 68 + 40 (có dấu); e) 102 + 88 (có dấu);
b) 121 + 40 (không dấu) d) 67 + (-100) (có dấu) f) (-80) + (-62) (có dấu)
(cid:1) Bài 2: Mô tả quá trình nhân trên máy tính các số 4 bit
b) 6 * 14; e) 6 * (-2);
c) 15 * 14 f) (-7) * (-4)
sau đây: a) 13 * 7; d) (-5) * 3;
(cid:1) Bài 3: Mô tả quá trình chia trên máy tính các số sau
đây: a) 13 : 5; c) (-11) : 6;
b) 10 : (-4) d) (-14) : (-5)
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 80
Bài tập (biểu diễn số thực)
(cid:1) Bài 1: Biểu diễn các số sau theo chuẩn IEEE 754/85
c) 50,3125
32 bit: a) 78,25; d) -133/128
b) -23,625; e) 20,15
(cid:1) Bài 2: Có các biểu diễn theo chuẩn IEEE 754/85 sau,
xác định giá trị của chúng: a) 41 8D 00 00H; c) 3E A0 00 00H;
b) C2 96 20 00H d) BC 91 00 00H
(cid:1) Bài 3: Có các biểu diễn theo chuẩn IEEE 754/85 sau,
xác định giá trị của chúng:
a) 10 00 00 00H; c) FF 80 00 00H;
b) 7F 80 00 00H d) 7F 80 00 10H
bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 81