Kiến trúc và tổ chức máy tính - Chương 2: Biểu diễn thông tin trong máy tính
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
Bạn đang xem trước 20 trang tài liệu Kiến trúc và tổ chức máy tính - Chương 2: Biểu diễn thông tin trong máy tính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
bangtqh@utc2.edu.vn
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
2Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
2.1. Các hệ đếm cơ bản
Hệ thập phân (Decimal System) → Con người sử
dụng.
Hệ nhị phân (Binary System) → Máy tính sử dụng
Hệ bát phân (Octal System) → Dùng để viết gọn số
nhị phân
Hệ thập lục phân (Hexadecimal System) → Dùng để
viết gọn số nhị phân
3Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Hệ thập phân (Decimal System)
Cơ số 10
Dùng 10 ký số: 0, 1, 2, ..., 9
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
4Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Hệ thập phân (tt)
Quy tắc đếm
5Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Ví dụ
215.37 = 2*102 + 1*101 + 5*100 + 3*10-1 + 7*10-2
Các chữ số phần nguyên:
215 : 10 = 21 dư 5
21 : 10 = 2 dư 1
2 : 10 = 0 dư 2
Các chữ số phần thập phân:
0.37 * 10 = 3.7 phần nguyên = 3
0.7 * 10 = 7.0 phần nguyên = 7
6Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Hệ nhị phân (Binary System)
Cơ số 2
Dùng 2 chữ số: 0, 1
Chữ số nhị phân gọi là bit (binary digit)
Bit là đơn vị thông tin nhỏ nhất
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
7Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Hệ nhị phân (tt)
8Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Hệ nhị phân (tt)
Quy tắc đếm
9Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Ví dụ
Có số nhị phân như sau: 1011 1001.101(2)
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)
10Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Hệ Bát phân (Octal System)
Cơ số 8
Dùng 8 chữ số: 0, 1, 2, 3, 4, 5, 6, 7
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
11Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Hệ bát phân (tt)
Quy tắc đếm
12Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Hệ thập lục phân (Hexadecimal System)
Cơ số 16
Dùng 16 chữ số: 0,1,..., 9, A, B, ..., F
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
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
13Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Hệ thập lục phân (tt)
Quy tắc đếm
14Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Tổng quát
15Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Chuyển đổi giữa các hệ đếm
16Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Bảng mã 8421
17Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Chuyển đổi tổng quát
18Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Phương pháp ghép nhóm
19Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Chuyển đổi số thập phân → nhị phân
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
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
20Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Ví dụ chuyển đổi
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 phần nguyên = 0
• 0.625 * 2 = 1.25 phần nguyên = 1
• 0.25 * 2 = 0.5 phần nguyên = 0
• 0.5 * 2 = 1.0 phần nguyên = 1
– Vậy: 61.3125(10) = 111101.0101(2)
21Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Mã hoá dữ liệu trong máy tính
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
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ự
22Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Mã hoá dữ liệu trong máy tính (tt)
Mã hoá và tái tạo tín hiệu tự nhiên
ADC
DAC
TH số
TH số
TH Ltục
TH Ltục
TH V.lý
TH V.lý
MT
Bộ tạo
tín hiệu
Bộ tái tạo
tín hiệu
23Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Mã hoá dữ liệu trong máy tính (tt)
24Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Mã hoá dữ liệu trong máy tính (tt)
25Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Lưu trữ dữ liệu trong máy tính
Bộ nhớ chính được tổ chức theo byte
Độ dài dữ liệu có thể chiếm 1 hay nhiều byte
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
26Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Ví dụ lưu trữ dữ liệu 32 bit
12 34 56 78
. . . Địa chỉ
78 X
56 X +1
34 X + 2
12 X + 3
. . .
đầu nhỏ
. . . Địa chỉ
12 X
34 X +1
56 X + 2
78 X + 3
. . .
đầu to
Ví dụ: Intel 80x86, Px: đầu nhỏ
Motorola 680x0: đầu to
Power PC, Itanium: cả hai loại
27Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
2.2. Biểu diễn số nguyên
Số nguyên không dấu (unsigned integer)
Số nguyên có dấu (signed integer)
Chuyển đổi độ dài
Bài tập
28Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Số nguyên không dấu
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
Cách biểu diễn
– Biểu diễn ở dạng nhị phân một cách bình thường
29Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Hiện tượng tràn số
30Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Các ví dụ
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
Giải:
– A = 73 = 64 + 8 + 1 = 26 + 23 + 20
73 = 0100 1001
– B = 138 = 128 + 8 + 2 = 27 + 23 + 21
138 = 1000 1010
31Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Các ví dụ (tt)
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
Giải:
– C = 0010 1010 = 25 + 23 + 21 = 32 + 8 + 2 = 42
– D = 1010 0110 = 27 + 25 + 22 + 21 =
= 128 + 32 + 4 + 2 = 166
32Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Số nguyên có dấu
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
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)
33Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Dùng dấu và độ lớn
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
Các bit còn lại biểu diễn giá trị
– Ví dụ:
+23 = 0001 0111; -23 = 1001 0111
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)
34Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Dùng mã bù 2
Đối với số dương: biểu diễn dạng nhị phân
Đố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
Đặ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
35Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Dùng mã bù 2 (tt)
Dạng tổng quát của số nguyên A
A = an-1an-2.a2a1a0
Giá trị của A được tính bởi công thức:
Dải giá trị của số nguyên sử dụng n bit:
-2n-1 ÷ 2n-1 – 1
- 8 bit: -128 ÷ 127
- 16 bit: -32 768 ÷ 32 767
- 32 bit: -2 147 483 648 ÷ 2 147 483 647
36Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Các ví dụ
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
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
+
37Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Các ví dụ
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
Giải:
C = 0110 1010 = + (64 + 32 + 8 + 2) = 106
D = 1100 0011 = - (64 + 2 + 1) = - 67
38Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Các ví dụ
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
Giải:
E = 0101 1110 = 64 + 16 + 8 + 4 + 2 = 94
F = 1101 1010 = -128 + 64 + 16 + 8 + 2 = -38
39Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Chuyển đổi độ dài (byteword)
Đối với số dương: thêm/bớt số 0 ở trước:
+23 = 0001 0111 (8 bit)
+23 = 0000 0000 0001 0111 (16 bit)
Đối với số âm: thêm/bớt số 1 ở trước
-23 = 1110 1001 (8 bit)
-23 = 1111 1111 1110 1001 (16 bit)
40Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Biểu diễn số nguyên theo mã BCD
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
• 12BCD trong hệ nhị phân là 0001 0010 có giá trị là
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ừ 09
(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
41Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Các kiểu lưu trữ số BCD
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
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
42
0 0 1 1 0 1 0 1
0 0 1 1 0 1 0 1
Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
2.3. Các phép toán trên số nguyên
Phép cộng: thực hiện như cách tính tay thông
thường nhưng ở hệ nhị phân
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)
43
Cộng Kết quả Nhớ
0 + 0 0 0
0 + 1 1 0
1 + 0 1 0
1 + 1 0 1
Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
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.
2. Đổi các số sau đây:
a. (011011)2 ra số thập phân.
b. (-2005)10 ra số nhị phân 16 bits.
c. (55.875)10 ra số nhị phân.
44Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
2.3. Các phép toán trên số nguyên (tt)
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
Ví dụ: 10 x 13
– Số bị nhân: 10(10) = 1010 (2)
– Số nhân: 13(10) = 1101(2)
45Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Giải thuật nhân số không dấu
46
Start
C:=0; A:=0; Bé ®Õm:=n
M chøa sè bÞ nh©n
Q chøa sè nh©n
Q0 = 1?
C,A:=A+M
DÞch ph¶i C, A, Q
Dec(Bé ®Õm)
Bé ®Õm = 0? End
§óng
Sai
§óngSai TÝch chøa
trong A,Q
Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Sơ đồ mạch nhân
47
Mn-1 . . . M0
An-1 . . . A0 Qn-1 . . . Q0
Bé céng n bit
Logic ®iÒu khiÓn
dÞch vµ céng
C
Sè nh©n
Sè bÞ nh©n
Céng
DÞch ph¶i
Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
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 1 Cộng 1010
(d) 4 0110 0 0101 0000 1 Dịch phải
(e) 3 0110 0 0101 0000 1 Giảm n
(c) 3 0110 0 0101 0000 2 LSB=0
(d) 3 0011 0 0010 1000 2 Dịch phải
(e) 2 0011 0 0010 1000 2 Giảm n, LSB=1
(c) 2 0011 0 1100 1000 3 Cộng 1010
(d) 2 0001 0 0110 0100 3 Dịch phải
(e) 1 0001 0 0110 0100 3 Giảm n, LSB=1
(c) 1 0001 1 0000 0100 4 Cộng 1010
(d) 1 0000 0 1000 0010 4 Dịch phải
(e) 0 0000 0 1000 0010 4 Giảm n. Dừng
48Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
2.3. Các phép toán trên số nguyên (tt)
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).
49Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Giải thuật Booth
50
Start
A:=0; Q-1:=0; Bé ®Õm:=n
M chøa sè bÞ nh©n
Q chøa sè nh©n
Q0, Q-1
A := A + M
DÞch ph¶i A, Q, Q-1
Dec(Bé ®Õm)
Bé ®Õm = 0? End
§óngSai
A := A - M
= 01= 10
= 11
= 00
L−u ý: An-1 ®−îc t¸i t¹o
TÝch chøa
trong A,Q
Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Ví dụ 1: -7 x 3 = -21
A Q(SN) Q
-1 M(SBN)
0000 0011 0 1001 Khởi tạo Count = 4
0111 0011 0 1001 A ← A - M
0011 1001 1 1001 SHR A, Q, Q
-1
0001 1100 1 1001 SHR A, Q, Q
-1
1010 1100 1 1001 A ← A + M
1101 0110 0 1001 SHR A, Q, Q
-1
1110 1011 0 1001 SHR A, Q, Q
-1
51
Lần 1,
Count = 3
Lần 2,
Count = 2
Lần 3,
Count = 1
Lần 4,
Count = 0
Kết quả: 1110 1011 (dạng bù 2 của 21)
Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Ví dụ 2: -5 x -6 = +30
A Q(SN) Q
-1 M(SBN)
0000 1010 0 1011 Khởi tạo Count = 4
0000 0101 0 1011 SHR A, Q, Q
-1
0101 0101 0 1011 A ← A - M
0010 1010 1 1011 SHR A, Q, Q
-1
1101 1010 1 1011 A ← A + M
1110 1101 0 1011 SHR A, Q, Q
-1
0011 1101 0 1011 A ← A - M
0001 1110 1 1011 SHR A, Q, Q
-1
52
Lần 1,
Count = 3
Lần 2,
Count = 2
Lần 3,
Count = 1
Lần 4,
Count = 0
Kết quả: 0001 1110
Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Ví dụ 3: 7 x 3 = 21
A Q(SN) Q
-1 M(SBN)
0000 0011 0 0111 Khởi tạo Count = 4
1001 0011 0 0111 A ← A - M
1100 1001 1 0111 SHR A, Q, Q
-1
1110 0100 1 0111 SHR A, Q, Q
-1
0101 0100 1 0111 A ← A + M
0010 1010 0 0111 SHR A, Q, Q
-1
0001 0101 0 0111 SHR A, Q, Q
-1
53
Lần 1,
Count = 3
Lần 2,
Count = 2
Lần 3,
Count = 1
Lần 4,
Count = 0
Kết quả: 0001 0101
Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
2.3. Các phép toán trên số nguyên (tt)
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
lại gán A ← A+M
4. 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.
54Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Thuật toán chia số nhị phân
55
Start
Bé ®Õm := n
M chøa sè chia (n bit)
A,Q chøa sè bÞ chia (2n bit)
Dec(Bé ®Õm)
Bé ®Õm = 0? End
§óngSai
DÞch tr¸i A,Q ®i 1 bit
B := A
M, A cïng dÊu?
A := A - M A := A + M
A, B cïng dÊu
hoÆc A = Q = 0?
Q0 = 1 Q0 = 0; A := B
§óng
§óng
Sai
Sai
Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
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 DÞch tr¸i 1 bit A, Q
1101 M cïng dÊu A → A := A - M
0001 1000 A kh¸c dÊu sau khi trõ → Q0 = 0 vµ phôc håi A
0011 0000 DÞch tr¸i 1 bit A, Q
1110 M cïng dÊu A → A := A - M
0011 0000 A kh¸c dÊu sau khi trõ → Q0 = 0 vµ phôc håi A
0110 0000 DÞch tr¸i 1 bit A, Q
0010 M cïng dÊu A → A := A - M
0010 0001 A cïng dÊu sau khi trõ → Q0 = 1
0100 0010 DÞch tr¸i 1 bit A, Q
0000 M cïng dÊu A → A := A – M
0000 0011 A cïng dÊu sau khi trõ → Q0 = 1. A chøa d, Q chøa th¬ng
56Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Ví dụ 2: 13 : (-4) = -3, dư 1
A Q M = 1100 (sè chia)
0000 1101 Khëi t¹o gi¸ trÞ (sè chia vµ bÞ chia kh¸c dÊu)
0001 1010 DÞch tr¸i 1 bit A, Q
1101 M kh¸c dÊu A → A := A + M
0001 1010 A kh¸c dÊu sau khi céng → Q0 = 0 vµ phôc håi A
0011 0100 DÞch tr¸i 1 bit A, Q
1111 M kh¸c dÊu A → A := A + M
0011 0100 A kh¸c dÊu sau khi céng → Q0 = 0 vµ phôc håi A
0110 1000 DÞch tr¸i 1 bit A, Q
0010 M kh¸c dÊu A → A := A + M
0010 1001 A cïng dÊu sau khi céng → Q0 = 1
0101 0010 DÞch tr¸i 1 bit A, Q
0001 M kh¸c dÊu A → A := A + M
0001 0011 A cïng dÊu sau khi céng → Q0=1. A chøa d, Q chøa bï 2 cña th¬ng
57Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
Ví dụ 3: (-11) : 3 = (-3), dư (-2)
A Q M = 0011 (sè chia)
1111 0101 Khëi t¹o gi¸ trÞ (sè chia vµ bÞ chia kh¸c dÊu)
1110 1010 DÞch tr¸i 1 bit A, Q
0001 M kh¸c dÊu A → A := A + M
1110 1010 A kh¸c dÊu sau khi céng → Q0 = 0 vµ phôc håi A
1101 0100 DÞch tr¸i 1 bit A, Q
0000 M kh¸c dÊu A → A := A + M
1101 0100 A kh¸c dÊu sau khi céng → Q0 = 0 vµ phôc håi A
1010 1000 DÞch tr¸i 1 bit A, Q
1101 M kh¸c dÊu A → A := A + M
1101 1001 A cïng dÊu sau khi céng → Q0 = 1
1011 0010 DÞch tr¸i 1 bit A, Q
1110 M kh¸c dÊu A → A := A + M
1110 0011 A cïng dÊu sau khi céng → Q0=1. A chøa d, Q chøa bï 2 cña th¬ng
58Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
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 DÞch tr¸i 1 bit A, Q
0100 M cïng dÊu A → A := A - M
1110 0100 A kh¸c dÊu sau khi trõ → Q0 = 0 vµ phôc håi A
1100 1000 DÞch tr¸i 1 bit A, Q
0000 M cïng dÊu A → A := A - M
1100 1000 A kh¸c dÊu sau khi trõ → Q0 = 0 vµ phôc håi A
1001 0000 DÞch tr¸i 1 bit A, Q
1111 M cïng dÊu A → A := A + M
1111 0001 A cïng dÊu sau khi céng → Q0 = 1
1110 0010 DÞch tr¸i 1 bit A, Q
0100 M cïng dÊu A → A := A - M
1110 0010 A kh¸c dÊu sau khi céng → Q0= 0. A chøa d, Q chøa cña th¬ng
59Chương 2 - Biểu diễn thông tin trong máy tính
bangtqh@utc2.edu.vn
2.4. Số dấu phẩy động
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:
= ± ∗ ±
– 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ố
Chương 2 - Biểu diễn thông tin trong máy tính 60
bangtqh@utc2.edu.vn
2.4. Số dấu phẩy động (tt)
Một số có nhiều dạng biểu diễn
– Khó xử lý
– Cần có sự chuẩn hóa
Chương 2 - Biểu diễn thông tin trong máy tính 61
bangtqh@utc2.edu.vn
Chuẩn IEEE 754/85
Số dấu phẩy động chính xác đơn (single precision)
– Sử dụng 32 bit, độ lệch mũ (bias) = 1