Giáo trình Kiến trúc máy tính - Chương 3: Tổ chức thông tin - Võ Hoàng Hải
3.1. Các hệ thống số 3.2. Mã hoá và lưu trữ dữ liệu trong máy tính 3.3. Biểu diễn số nguyên 3.4. Thực hiện các phép toán số học với số nguyên 3.5. Số dấu chấm động 3.6. Biểu diễn ký tự
Bạn đang xem trước 20 trang tài liệu Giáo trình Kiến trúc máy tính - Chương 3: Tổ chức thông tin - Võ Hoàng Hải, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Kiến trúc máy tính
Chương 3: Tổ chức thông tin
BIỂU DIỄN DỮ LIỆU VÀ
SỐ HỌC MÁY TÍNH
3.1. Các hệ thống số
3.2. Mã hoá và lưu trữ dữ liệu trong máy tính
3.3. Biểu diễn số nguyên
3.4. Thực hiện các phép toán số học với số
nguyên
3.5. Số dấu chấm động
3.6. Biểu diễn ký tự
3.1. Các hệ thống số
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ệ thập lục phân (Hexadecimal System)
Dùng để viết gọn số nhị phân
Hệ bát phân (Octal System)
Hệ thập phân
Hệ thập phân
Cơ số 10
10 chữ số: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Dùng n chữ số thập phân có thể biểu diễn
được 10n giá trị khác nhau:
00...000 = 0
99...999 = 10n - 1
Hệ thập phân
472.38 = 4x102 + 7x101 + 2x100 + 3x10-1 +
8x10-2
Các chữ số của phần nguyên:
472 : 10 = 47 dư 2
47 : 10 = 4 dư 7
4 : 10 = 0 dư 4
Các chữ số của phần lẻ:
0.38 x 10 = 3.8 phần nguyên = 3
0.8 x 10 = 8.0 phần nguyên = 8
Hệ nhị phân
Hệ nhị phân
Cơ số 2
2 chữ số nhị phân: 0 và 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 bit có thể biểu diễn được 2n giá trị
khác nhau:
00...000 = 0
11...111 = 2n-1
Hệ nhị phân
Có một số nhị phân A như sau:
A = anan-1...a1a0.a-1...a-m
Giá trị của A được tính như sau:
A = an2
n + an-12
n-1 +...+ a02
0 + a-12
-1 +...+ a-m2
-m
Ví dụ:
1101001.1 0 1 1(2)
6543210-1-2-3-4
= 26 + 25 + 23 + 20 + 2-1 + 2-3 + 2-4
= 64 + 32 + 8 + 1 + 0.5 + 0.125 + 0.0625
= 105.6875(10)
Hệ bát phân
Hệ thập lục phân
Tổng quát
Chuyển đổi các hệ số
Chuyển đổi các hệ số
Phương pháp chuyển đổi
Phương pháp chuyển đổi
Biểu diễn thông tin trong
hệ nhị phân
BIT (BInary digiT) :
0 1
BYTE = tổ hợp 8 bit :
01001101 11111111
WORD = tổ hợp nhiều bit :
10110 1011100101
1 KiloByte (KB) = 1024 byte = 210 byte
1 MegaByte (MB) = 1024 KB = 220 byte
1 GigaByte (GB) = 1024 MB = 230 byte
3.2 Mã hoá và lưu trữ dữ liệu
trong máy tính
Nguyên tắc chung về mã hoá dữ liệu
Mọi dữ liệu đưa vào máy tính đều đượ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 số nguyên: mã hoá theo một số chuẩnqui ước
Dữ liệu số thực: mã hoá bằng số dấu chấm động
Dữ liệu ký tự: mã hoá theo bộ mã ký tự
Dữ liệu tự nhiên: tồn tại khách quan với con người
Mã hóa thông tin đầu vào
Mã hóa thông tin đầu vào
Thứ tự lưu trữ các byte
của dữ liệu
Bộ nhớ chính thường được tổ chức theo byte
Độ dài từ dữ liệu có thể chiếm từ một đến
nhiều byte
⇒ cần phải biết thứ tự lưu trữ các byte trong bộ nhớ
chính với các dữ liệu nhiều byte.
Thứ tự lưu trữ các byte
của dữ liệu
Có 2 cách lưu trữ:
Lưu trữ đầu nhỏ (Little-endian): Byte thấp được lưu trữ ở
ngăn nhớ có địa chỉ nhỏ hơn, byte cao được lưu trữ ở
ngăn nhớ có địa chỉ lớn hơn.
Lưu trữ đầu to (Big-endian): Byte cao được lưu trữ ở ngăn
nhớ có địa chỉ nhỏ hơn, byte thấp được lưu trữ ở ngăn
nhớ có địa chỉ lớn hơn.
Intel 80x86 và các Pentium ⇒ Little-endian
Motorola 680x0 và các bộ xử lý RISC ⇒ Big-endian
Power PC và Itanium ⇒ cả hai
3.3 Biểu diễn số nguyên
Có hai loại số nguyên:
Số nguyên không dấu (Unsigned Integer)
Số nguyên có dấu (Signed Integer)
Biểu diễn số nguyên không dấu
Dùng n bit biểu diễn số nguyên không dấu A:
an-1an-2..a2a1a0
Giá trị của A được tính như sau:
Dải biểu diễn của A: 0 -:- 2n-1
Số 8 bit có giá trị : 0 ÷ 255
Số 16 bit có giá trị : 0 ÷ 65 535
Số 32 bit có giá trị : 0 ÷ 4 294 967 295
1
0
2
n
i
i
iaA
Biểu diễn số nguyên không dấu
n=8 bit
Biểu diễn được các giá trị từ 0 đến 255
0000 0000 = 0 Chú ý:
0000 0001 = 1 1111 1111
0000 0010 = 2 + 0000 0001
0000 0011 = 3 1 0000 0000
Vậy: 255 + 1 = 0?
1111 1111 = 255 do tràn nhớ ra ngoài
Biểu diễn số nguyên có dấu
Số bù một và Số bù hai
Giả sử A là một số nhị phân, ta có:
Số bù một của A nhận được bằng cách đảo giá trị các bit
của A
(Số bù hai của A) = (Số bù một 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
+ 1
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
Biểu diễn số nguyên có dấu
Biểu diễn số nguyên có dấu bằng mã bù hai
Dùng n bit biểu diễn số nguyên có dấu A:
an-1an-2a2a1a0
Qui ước: chọn bit có trọng số cao nhất (MSB) làm
bit dấu
Với 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
Với 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
Biểu diễn số nguyên có dấu
Dạng tổng quát của số nguyên A:
an-1an-2a2a1a0
Giá trị của A được xác định như sau:
Dải biểu diễn: -2n-1 ÷ 2n-1-1
Số 8 bit có dấu có giá trị : -128 ÷ +127
Số 16 bit có dấu có giá trị : -32768 ÷ +32767
2
0
1
1 22
n
i
i
i
n
n aaA
Biểu diễn số nguyên có dấu
n = 8 bit
Biểu diễn được các giá trị từ -128 đến +127
0000 0000 = 0
0000 0001 = +1
0000 0010 = +2 Chú ý:
0000 0011 = +3 +127 + 1 = -128
-128 - 1 = +127
0111 1111 = +127 do tràn xảy ra
1000 0000 = - 128
1000 0001 = - 127
1111 1110 = -2
1111 1111 = -1
Biểu diễn số nguyên có dấu
Chuyển đổi từ byte thành 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
Với n=32 bit: biểu diễn từ -231 đến 231-1
Với n=64 bit: biểu diễn từ -263 đến 263-1
Biểu diễn số nguyên theo mã BCD
Binary Coded Decimal Code
Số BCD được dùng để tính toán trên số thập phân
trong hệ nhị phân.
Số BCD là số viết theo hệ 16 nhưng giá trị tính theo
hệ 10.
Số 12BCD được viết trong hệ 2 là 0001 0010 nhưng có giá
trị là 12 thay vì 18 (1216= 1810).
Dùng 4 bit để mã hoá cho các chữ số thập phân từ 0 đến 9
0 0000 3 0011 6 0110 9 1001
1 0001 4 0100 7 0111
2 0010 5 0101 8 1000
Có 6 tổ hợp không sử dụng:
1010, 1011, 1100, 1101, 1110, 1111
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ữ 2 byte:
0011 0101
BCD gói (Packed BCD):
Hai số BCD được lưu trữ trong 1 byte.
Ví dụ: số 35 được lưu trữ 1 byte:
0 0 1 1 0 1 0 1
Thực hiện các phép toán số học
với số nguyên
Phép cộng
Phép đảo dấu
Phép đảo dấu trong máy tính thực chất là lấy bù 2
Phép trừ
Nhân số nguyên
không dấu
có dấu
Thuật toán nhân nhanh Booth
Chia số nguyên
không dấu
có dấu
Số dấu chấm động
Số chấm độ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 số dấu chấm động
như sau:
X = ± m * B±e
m là phần định trị (Mantissa),
B là cơ số (base),
e là phần mũ (Exponent).
m (mantissa) quyết định độ chính xác
B (base)
e (exponent) quyết định độ lớn/nhỏ
Số dấu chấm động
Một giá trị có thể biểu diễn dưới nhiều dạng
Khó xử lý
Cần chuẩn hóa
Số chấm động theo chuẩn IEEE 754
Cơ số 2
Có 2 dạng
Chính xác đơn
32 bit, độ lệch mũ (bias) 127
Công thức tính giá trị X = (-1)S x 1.m x 2e-127
Chính xác kép
64 bit, độ lệch mũ (bias) 1023
Công thức tính giá trị X = (-1)S x 1.m x 2e-1023
Số chấm động theo chuẩn IEEE 754
Các quy ước đặc biệt
Các bit của e bằng 0, các bit của m bằng 0, thì
X= ± 0
x000 0000 0000 0000 0000 0000 0000 0000 X= ± 0
Các bit của e bằng 1, các bit của m bằng 0, thì
X= ± ∞
x111 1111 1000 0000 0000 0000 0000 0000 X= ± ∞
Các bit của e bằng 1, còn m có ít nhất 1 bit bằng
1, thì nó không biểu diễn cho số nào cả (NaN –
not a number)
Biểu diễn ký tự
Bộ mã ASCII (American Standard Code for
Information Interchange)
Do ANSI (American National Standard Institute)
thiết kế
Bộ mã 8 bit có thể mã hóa được 28 =256 ký tự,
có mã từ: 0016 ÷ FF16 , trong đó:
128 ký tự chuẩn, có mã từ 0016 ÷ 7F16
128 ký tự mở rộng, có mã từ 8016 ÷ FF16
Bộ mã Unicode
Bộ mã ASCII
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
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
...
‘9’ 0011 1001 = 3916
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