SỐ HỌC NHỊ PHÂN
Nếu bit của số nhân là 0 => Tích riêng phần bằng 0
Nếu bit của số nhân là 1 => Tích riêng phần là giá trị số bị nhân
Tích riêng phần tiếp theo được dịch trái 1 bit so với tích riêng phần phía trước đó.
Tích bằng tổng các tích riêng phần.
Nhân hai số nguyên n bit. Tích có độ dài luôn chuẩn bị 2n bit. Vì vậy phép nhân không có khái niệm tràn
62 trang |
Chia sẻ: maiphuongdc | Lượt xem: 13276 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Bài giảng Biểu diễn dữ liệu và số học máy tính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
GV: Đinh Đồng Lưỡng
Chương 3
Biểu diễn dữ liệu và số học máy tính
3.1 Các hệ đếm cơ bản
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 Số học nhị phân
3.5 Biểu diễn số dấu chấm động
3.6 Biểu diễn ký tự
GV: Đinh Đồng Lưỡng
3.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ệ thập lục phân (Hexadecimal System): dùng biểu
diễn rút ngắn số học nhị phân
Cách chuyển đổi giữa các hệ đếm.
GV: Đinh Đồng Lưỡng
Hệ thập phân (decimal)
Bộ ký tự cơ sở gồm 10 số: 0…9
Dạng tổng quát: an-1an-2an-3…a1a0,a-1 a-2…a-m
45
123
=123,45
∑−
−=
=
1
10*
n
mi
i
iaA
Ví dụ: 123,45
Phần nguyên : 123 : 10 = 12 dư 3
12 : 10 = 1 dư 2
1 : 10 = 0 dư 1
Phần phân : 0,45*10 = 4,5
0,5 *10 = 5
Trong đó (ai = 0…9).
GV: Đinh Đồng Lưỡng
Hệ nhị phân(Binary)
Bộ ký tự cơ sở gồm 2 số: 0,1
Dạng tổng quát: an-1an-2an-3…a1a0,a-1 a-2…a-m
Ví dụ: 11011,0112 = 24+23+21+20+2-2+2-3 =27,375
Thập lục phân (hexadecimal)
Bộ ký tự cơ sở: 0…9,A…F
Dạng tổng quát: an-1an-2an-3…a1a0,a-1 a-2…a-m
Ví dụ: 89ABH = 1000 1001 1010 1011B.
)1,0(2*
1
== ∑−
−=
i
n
mi
i
i aaA
)..,9..0(16*
1
FAaaA i
n
mi
i
i == ∑
−
−=
Hệ nhị phân (Binary)
Hệ thập lục phân (Hexadecimal)
GV: Đinh Đồng Lưỡng
3.2 Mã hoá và lưu trữ trong máy tính
Nguyên tắc chung về mã hoá dữ liệu
Mọi dữ liệu được đưa vào máy tính đượ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 số nguyên: mã hoá theo một số chuẩn đã qui
ước
• Dữ liệu số thực: mã hoá bằng số dấu chấm động
• Dữ liệu phi số (ký tự): mã hoá theo các bộ mã ký tự
hiện hành như : ASCII, Unicode,…
GV: Đinh Đồng Lưỡng
Mô hình mã hoá và tái tạo tín hiệu vật lý
Bộ cảm
biến tín
hiệu
(Sensor)
Bộ tái tạo
tín hiệu
Bộ chuyển
đổi số=>
tương tự
(ADC
Bộ chuyển
đổi tương tự
=> số
(ADC)
Máy tính
T/h vlý
T/h vlý
Các dữ liệu vật lý thông dụng
Âm thanh
Hình ảnh
GV: Đinh Đồng Lưỡng
Thứ tự lưu trữ các byte dữ liệu MT
Bộ nhớ chính tổ chức lưu trữ dữ liệu theo đơn vị byte
Độ dài từ dữ liệu có thể chiếm từ 1 đến 4 byte. Vì vậy
cần phải biết thứ tự chúng lưu trữ trong bộ nhớ chính
đối các dữ liệu nhiều byte.
Có hai cách lưu trữ được đưa ra
Little Endian (đầu nhỏ): Byte có ý nghĩa thấp hơn
được lưu trữ trong bộ nhớ ở vị trí có địa chỉ nhỏ hơn.
Big Endian (đầu to): Byte có ý nghĩa thấp hơn được
lưu trữ trong bộ nhớ ở vị trí có địa chỉ lớn hơn.
GV: Đinh Đồng Lưỡng
Ví dụ: lưu trữ một từ 32bit
0001 1010 0010 1011 0011 1100 0100 1101B
1 A 2 B 3 C 4 D H
Biểu diễn trong ngăn nhớ theo 2 cách
300 4D 300 1A
301 3C 301 2B
302 2B 302 3C
303 1A 303 4D
Little Endian Big Endian
Thứ tự lưu trữ các byte dữ liệu MT
GV: Đinh Đồng Lưỡng
Lưu trữ của các bộ vi xử lý điển hình
Loại máy Intel: 80x86, Petium -> little endian
Motorola 680x0 và các bộ xử lý RISC -> big endian
Power PC & Itanium: tích hợp cả hai cách trên
Thứ tự lưu trữ các byte dữ liệu MT
GV: Đinh Đồng Lưỡng
3.3. Biểu diễn số nguyên
Máy tính biểu diễn số nguyên chia thành 2 loại
Biểu diễn số nguyên không dấu (unsign integer)
Biểu diễn số nguyên có dấu (sign integer)
Số nguyên không dấu:
Giả sử dùng n bit để biểu diễn số nguyên không dấu->
dải mà n bit biểu diễn được từ 0 -> 2n-1. Giá trị của số
nguyên đó được tính:
• Dải miền trị của số nguyên không dấu được biểu bằng
hình tròn
• Giá trị nhỏ nhất bằng 0
• Giá trị lớn nhất bằng 2n-1
∑−
=
1
0
2*
n
i
i
ia
GV: Đinh Đồng Lưỡng
• Ví dụ: n=8 0…28-1 (255)
n=16 0… 216-1 (65535).
n=32 0…232-1
Ví dụ: Số nguyên không dấu
GV: Đinh Đồng Lưỡng
Số nguyên có dấu
• Số bù một và số bù hai
ĐN: Cho một số nhị phân N được biểu diễn bởi n bit. Ta
có
Số bù một của N bằng (2n-1)-N
Số bù hai của N bằng 2n-N
Ví dụ: Cho số N = 0001 00012 được biểu diễn bởi n=8bit.
Xác định số bù 1 và bù 2 của N.
Ap dụng công thức 1111 1111 (2n-1)
0001 0001 N
số bù một của N 1110 1110
GV: Đinh Đồng Lưỡng
Số nguyên có dấu
Nhận xét: số bù một của một số N được xác định
bằng cách đảo các bit trong N
Ap dụng công thức 1 0000 0000 (2n)
0001 0001 N
số bù hai của N 1110 1111
Nhận xét: số bù hai của một số N được xác định
bằng cách lấy số bù một của N cộng thêm 1
Số bù 2 của N =(số bù 1 của N)+1
GV: Đinh Đồng Lưỡng
Số nguyên có dấu
Giả sử dùng n bit để biểu diễn số nguyên có dấu-> dải
mà n bit biểu diễn được từ (- 2n-1 ..-1,0 .. 2n-1-1). Giá trị
của số nguyên đó được tính theo 2 phần riêng biệt:
Phần giá trị dương (0 -> 2n-1-1).
Phần giá trị âm (- 2n-1…-1).
Dải miền trị của số nguyên có dấu được biểu bằng
hình tròn
Giá trị nhỏ nhất bằng - 2n-1
Giá trị lớn nhất bằng +2n-1-1
GV: Đinh Đồng Lưỡng
Số nguyên có dấu
Trong đó: Bít có trọng số cao nhất (hay bit ngoài cùng
bên trái của dãy nhị được máy tính sử dụng để biểu diễn
dấu của giá trị) nếu:
= 0 : thì số nhị phân cần tính giá trị là số dương.
Dạng tổng quát là: 0an-2an-3…a0
= 1 : thì số nhị phân cần tính giá trị là số âm.
Dạng tổng quát là: 1an-2an-3…a0
Giá trị tính
∑−
=
− +−
2
0
1 2*2
n
i
i
i
n a
GV: Đinh Đồng Lưỡng
Ví dụ 1
Ví dụ 1: Cho số nguyên có dấu biểu diễn n=8bit sau:
A=B5H và B=6AH
Hãy xác định giá trị của hai số nguyên có dấu A và B dưới dạng
hệ số người sử dụng
Bài giải
• Biểu diễn số nguyên A dưới dạng nhị phân
A=B5H = 1011 01012
=>A= -128 + 53 = - 75
• Biểu diễn số nguyên B dưới dạng nhị phân
B=6AH = 0110 10102
=> B = 64+32+8+2 = 106
GV: Đinh Đồng Lưỡng
Ví dụ 2
Ví dụ 2: Biểu diễn số nguyên có dấu sau đây A=+97 và
B=-101 theo hai dạng kiểu n=8bit và n=16bit trong máy
tính.
Lời giải
Biểu diễn số A dạng số nguyên có dấu trong máy tính
A = 0110 00012 (n=8bit)
Biểu diễn số B dạng số nguyên có dấu trong máy tính
Biểu diễn số +101 = 0110 01012
Lấy bù 2 1001 10112
=> B = - 101 = 1001 10112
GV: Đinh Đồng Lưỡng
Biểu diễn số A dạng số nguyên có dấu trong máy tính
A = 0000 0000 0110 00012 (n=16bit)
Biểu diễn số B dạng số nguyên có dấu trong máy tính
Biểu diễn số +101 =0000 0000 0110 01012
Lấy bù 2 1111 1111 1001 10112
=> B =-101 = 1111 1111 1001 10112
Ví dụ 2
GV: Đinh Đồng Lưỡng
Biểu diễn số nguyên theo mã BCD
(Binary Coded Decimal Code)
Dùng nhóm 4 bit để mã hoá mười số nhị phân
0 -> 0000 6 -> 0110
1 -> 0001 7 -> 0111
2 -> 0010 8 -> 1000
3 -> 0011 9 -> 1001
4 -> 0100
5 -> 0101
Có 6 tổ hợp không được sử dụng đó là: 1010, 1011,
1100, 1101, 1110, 1111.
GV: Đinh Đồng Lưỡng
Biểu diễn số
38 = 0011 1000BCD
61 = 0110 0001BCD
Thực hiện phép cộng:
38 0011 1000BCD
61 0110 0001BCD
99 1001 1001BCD
275 0010 0111 0101BCD
816 1000 0001 0110BCD
1091 1010 1000 1011BCD => sai
Biểu diễn số nguyên theo mã BCD
GV: Đinh Đồng Lưỡng
Biểu diễn số nguyên theo mã BCD
Chỉnh lại cho đúng: Cộng thêm 6(0110) vào các cột
có giá trị lớn hơn 9 có nhớ. Phép toán trên ta cộng thêm
vào cột 1 và cột 3 tính lại ta được 001BCD Ta đuợc 1091
275 0010 0111 0101BCD
816 1000 0001 0110BCD
1091 1010 1000 1011BCD => sai
0110 0000 0110
1 0000 1001 0001 => đúng
GV: Đinh Đồng Lưỡng
3.4 Số học nhị phân
Phép cộng số nguyên không dấu
Khi cộng hai số nguyên không dấu n bit
Nếu không có nhớ ra khỏi bit cao nhất thì kết quả nhận
được luôn đúng.
Nếu có nhớ ra khỏi bit cao nhất thì kết quả nhận được
là sai. Hay nói khác hơn phép cộng bị tràn(Cout =1)
Tràn cờ nhớ (Carry Out) xảy ra khi kết quả phép toán
nhận được > 2n-1
Bộ cộng
n bit
Y(n-bit) X(n-bit)
cin cout
S(n-bit)
GV: Đinh Đồng Lưỡng
Cộng số nguyên có dấu.
Khi cộng hai số nguyên có dấu n-bit -> Kết quả
nhận được ta không quan tâm đến cờ mang Cout. Mà ta
chỉ nhận kết quả tính được trong n-bit. Vì vậy cộng hai
số khác dấu thì cho kết quả luôn luôn đúng. Nếu cộng hai
số cùng dấu nếu kết quả trả về cùng dấu toán hạng thi kết
quả đúng. Ngược lại kết quả khác dấu toán hạng thì xảy
ra hiện tượng tràn (Overflow) kết quả sai.
3.4 Số học nhị phân
GV: Đinh Đồng Lưỡng
Phép trừ
Phép trừ số nguyên chính là phép
cộng với số đảo dấu.
Ví như X-Y = X+(-Y)
Tìm số đảo chính là ta tìm bù
hai của số đó.
Nguyên tắc phép trừ: Lấy bù
hai của Y ra thành –Y rồi cộng
với X
Bộ cộng n-bit
Bù hai
S=X-Y
Y (n-bit) X(n-bit)
-Y
3.4 Số học nhị phân
GV: Đinh Đồng Lưỡng
• Nhân số nguyên không dấu
1011
1001
1011
0000
0000
1011
1100011 (99) -> Tích
Số bị nhân
Số nhân
Tích riêng phần
3.4 Số học nhị phân
GV: Đinh Đồng Lưỡng
Nếu bit của số nhân là 0 => Tích riêng phần bằng 0
Nếu bit của số nhân là 1 => Tích riêng phần là giá trị
số bị nhân
Tích riêng phần tiếp theo được dịch trái 1 bit so với
tích riêng phần phía trước đó.
Tích bằng tổng các tích riêng phần.
Nhân hai số nguyên n bit. Tích có độ dài luôn chuẩn
bị 2n bit. Vì vậy phép nhân không có khái niệm tràn.
3.4 Số học nhị phân
GV: Đinh Đồng Lưỡng
Số nhân
Mn-1 Mn-2 * * * M1 M0
An-1 An-2 * * * A1 A0 Qn-1 Qn-2 * * * Q1 Q0
Bộ cộng n bit Bộ điều khiển cộng
và dịch
C
ĐK cộng
ĐK dịch phải
Số bị nhân
Bộ nhân số nguyên không dấu
3.4 Số học nhị phân
GV: Đinh Đồng Lưỡng
START
END
C,A<=0; Count <= n; M <=số bị nhân; Q <=số nhân
Qo=1
?
Shift right C,A,Q
Count =Count-1
C,A <= A+M
Count=0?
N
N Y
Y
Lưu đồ thuật toán cho phép
nhân không dấu
3.4 Số học nhị phân
GV: Đinh Đồng Lưỡng
Ví dụ: nhân số nguyên không dấu
ví dụ 1:
Số bị nhân: 1011
Số nhân : 1001
Tích : 1100011
Thao tác theo sơ đồ thuật toán trên: M =1011
GV: Đinh Đồng Lưỡng
C A Q thao tác
0 1011 1001 C,A=A+M
0 0101 1100 Shift right
0 0010 1110 Shift right
0 0001 0111 Shift right
0 1100 0111 C,A=A+M
0 0110 0011 Shift right
0110 0011 -> tích cần tìm nằm
trong A và Q
0 0000 1001 Qo=1
0 0101 1100 Qo=0
0 0010 1110 Qo=0
0 0001 0111 Qo=1
Ví dụ: nhân số nguyên không dấu
GV: Đinh Đồng Lưỡng
Ví dụ 2:
Số bị nhân: 1101
Số nhân : 1010
Tích : 1000 0010
Thao tác theo sơ đồ thuật toán trên: M =1011
Ví dụ: nhân số nguyên không dấu
GV: Đinh Đồng Lưỡng
C A Q thao tác
0 0000 0101 Shift right
0 1101 0101 C,A=A+M
0 0110 1010 Shift right
0 0110 1010 Qo=0
0 0011 0101 Shift right
0 0011 0101 Qo=1
1 0000 0101 C,A=A+M
0 1000 0010 Shift right
1000 0010 -> tích cần tìm nằm
trong A và Q
0 0000 0101 Qo=1
0 0000 1010 Qo=0
Ví dụ: nhân số nguyên không dấu
GV: Đinh Đồng Lưỡng
Nhân số nguyên có dấu
Ta có thể sử dụng một trong hai thuật toán:
Sử dụng thuật toán nhân không dấu cho số có dấu.
Sử dụng thuật toán giải Booth
Thuật toán nhân không dấu:
Chuyển số bị nhân và số nhân thành số dương
Nhân hai số dương sử dụng thuật giải trên
Hiệu chỉnh dấu của tích
- Nếu 2 thừa số có cùng dấu thì kết quả tính được là kết quả
cần tìm
- Nếu 2 thừa số khác dấu thì kết quả là giá trị bù hai của kết
kết quả vừa tính.
Thuật toán Booth
GV: Đinh Đồng Lưỡng
Thuật toán Booth:
START
END
C <-0; Q-1<- 0; Count <- n; M <-số bị nhân; Q <-số nhân
QoQ-1
Shift Q,Q-1
Count =Count-1
A <- A+M
Count=0?
N
10 01
Y
A <- A-M
GV: Đinh Đồng Lưỡng
Ví dụ: nhân số nguyên có dấu
Ví dụ 1:
Số bị nhân: 0111 (7)
Số nhân : 0011 (3)
Tích : 00010101 (21)
Thao tác theo sơ đồ thuật toán trên: M =0111
GV: Đinh Đồng Lưỡng
A Q Q-1 thao tác
1001 0011 0 A=A-M
1100 1001 1 Shift right
1110 0100 1 Shift right
1110 0100 1 QoQ-1=01
0101 0100 1 A=A+M
0010 1010 0 Shift right
0010 1010 0 QoQ-1=00
0001 0101 0 Shift right
0001 0101 -> tích cần tìm nằm trong A và Q
0000 0011 0 QoQ-1=10
1100 1001 1 QoQ-1=11
Ví dụ: nhân số nguyên có dấu
GV: Đinh Đồng Lưỡng
Ví dụ 2:
Số bị nhân: 1001(-7)
Số nhân : 0011 (3)
Tích : 1110 1010 (-21)
Thao tác theo sơ đồ thuật toán trên: M =1001
Ví dụ: nhân số nguyên có dấu
GV: Đinh Đồng Lưỡng
A Q Q-1 thao tác
0111 0011 0 A=A-M
0011 1001 1 QoQ-1=11
0001 1100 1 QoQ-1=01
1010 1100 1 A=A+M
1101 0110 0 QoQ-1=00
1110 1011 -> tích cần tìm
nằm trong A và Q
0000 0011 0 khởi tạo Q-1=0
0000 0011 0 QoQ-1=10
0011 1001 1 Shift right
0001 1100 1 Shift right
1101 0110 0 Shift right
1110 1011 0 Shift right
Ví dụ: nhân số nguyên có dấu
GV: Đinh Đồng Lưỡng
Ví dụ 3:
Số bị nhân: 1001(-7)
Số nhân : 1101 (-3)
Tích : 00010101 (21)
Thao tác theo sơ đồ thuật toán trên: M =1001
Ví dụ: nhân số nguyên có dấu
GV: Đinh Đồng Lưỡng
A Q Q-1 thao tác
0111 1101 0 A=A-M
0011 1110 1 QoQ-1=01
1100 1110 1 A=A+M
1110 0111 0 QoQ-1=10
0101 0111 1 A=A-M
0010 1011 1 QoQ-1=00
0001 0101
0000 1101 0 khởi tạo Q-1=0
0000 1101 0 QoQ-1=10
0011 1110 1 Shift right
1110 0111 0 Shift right
0010 1011 1 Shift right
0001 0101 1 Shift right
Ví dụ: nhân số nguyên có dấu
GV: Đinh Đồng Lưỡng
Lưu ý
Chú ý: Shift A,Q,Q-1 là phép dịch trải bình thường.
Tuy nhiên bit An-1 được dịch sang bit An-2, nhưng
vẫn còn ở vị trị đó sau khi đã dịch.
GV: Đinh Đồng Lưỡng
Chia số nguyên không dấu
Phép chia bao gồm các thành phần: số bị chia, số chia,
thương số và có thể có cả phần dư nữa.
Số bị chia
Phần dư
riêng phần
Phần dư
Thương số
Số chia
1101
1011 10010011
1011
01110
1011
001111
1011
100
GV: Đinh Đồng Lưỡng
Lưu đồ chia số nguyên không dấu
START
END
A<- 0; Count <- n; Q <-số bị chia; M <-số chia
A<0?
Count =Count-1
Q0 <- 0
A <- A+M
Count=0?
N
N Y
Y
Q0 <- 1
Dịch trái A,Q
A <- A-M
GV: Đinh Đồng Lưỡng
Chia số nguyên có dấu
Chuyển đổi số bị chia và số chia về dạng số dương
Sử dụng thuật giải chia số nguyên không dấu. Kết quả
thương trong Q và phần dư trong A
Hiệu chỉnh dấu kết quả:
Số bị chia Số chia Thương Số dư
+ + Giữ nguyên
kết quả
Giữ nguyên
+ - Đảo dấu kết
quả
Giữ nguyên
- + Đảo dấu kết
quả
Đảo dấu
- - Giữ nguyên
kết quả
Đảo dấu
GV: Đinh Đồng Lưỡng
Biểu diễn số dấu chấm động
Cho hai giá trị:
Khối lượng mặt trời:
199000000000000000000000000000000000g
Khối lượng điện tử:
0.00000000000000000000000000000910956g
Để lưu trữ con số này thì máy tính cần đến số bit rất
lớn. Như vậy, trong trường hợp này thì loại số có dấu
chấm tĩnh sẽ rất bất tiện. Vì vậy tất cả máy tính lưu trữ
những số trên dưới dạng dấu chấm động (floating point)
1.990 x 1033 và 0.910956x 10-27 hay theo số khoa học là :
1.999E+33 và 0.910956E-27.
GV: Đinh Đồng Lưỡng
Dạng tổng quát
M.RE Trong đó: M (Matissa) phần định trị
R (Radix) cơ số
E(Exponent) số mũ
X=(-1)s 1.M 2E-B
Trong đó: s: là bit dấu (s=0 phần định trị là dương; s=1
phần định trị là âm)
M : là phần định trị.
E: là số mũ được dịch chuyển đi B đơn vị.
R đã được biết (R=2) máy tính lưu số dấu
chấm động bao gồm hai thành phần chính
Biểu diễn số dấu chấm động
GV: Đinh Đồng Lưỡng
Chuẩn IEEE 754-1985 phân định 3 dạng số dấu chấm
động cơ bản
(IEEE: Institute of Electrical and Electronics Engineers )
Số có độ chính xác đơn dài 32 bit (single)
Số có độ chính xác kép dài 64 bit (double)
Số có độ chính xác mở rộng dài 128bit (quadruple)
Biểu diễn số dấu chấm động
GV: Đinh Đồng Lưỡng
Loại Single Double Quadruple
Bề rộng của
trường (bit)
S
E
M
Tổng cộng
E cực đại
E cực tiểu
Độ dịch
1
8
23
32
255
0
127
1
11
52
64
2047
0
1023
1
15
111
128
32767
0
16383
Biểu diễn số dấu chấm động
GV: Đinh Đồng Lưỡng
S E M
Biểu diễn số dấu chấm động chuẩn IEEE 32bit
±
• e±
S=1 phần định trị là âm
S=0 phần định trị là dương
E: giá trị E nằm trong 8 bit, là số mũ được dịch chuyển
đi 127
M: phần định trị, giá trị nằm trong 23 bit
Ta có số –2345,125 trong hệ thập phân. Hãy biểu diễn
chúng dưới dạng chuẩn IEEE 32bit trong máy tính
GV: Đinh Đồng Lưỡng
B1: Chuyển đổi số trên ra hệ hai
-2345,125d = -1001 0010 1001.001b (dãy số nhị phân
được biểu diễn bình thường)
B2: Chuẩn hoá theo IEEE 32bit
-1.001 0010 1001 001 x 211
B3: Xác định các thông số biểu diễn s,M,E
S: phần định trị là số âm, nên s là 1
E : phần mũ được xác định e = E-127
=> E = 11+127=138=10001010
M: phần định trị được xác định là 001 0010 1001 0010
0000 0000 (số 32 bit)
Biểu diễn số dấu chấm động
GV: Đinh Đồng Lưỡng
Để thực một phép cộng hoặc trừ hai số dấu chấm
động phải tiến hành theo các bước sau:
Tăng số mũ của số có số mũ nhỏ hơn cho bằng số có số
mũ lớn hơn.
Cộng (hoặc trừ) các phần định trị.
Nếu cần thiết chuẩn hoá kết quả trả lại.
Biểu diễn số dấu chấm động
X1 -> M1 và E1 để biểu diễn X1 =M1*RE1
X2 -> M2 và E2 để biểu diễn X2 =M2*RE2
X1*X2 = (M1*M2)*RE1+E2
X1/ X2 = (M1 / M2)*RE1-E2
X1±X1=(M1*R(E1-E2) ±M2)*RE2 (với giả thiết E1>E2)
GV: Đinh Đồng Lưỡng
•Một số quy ước
Nếu e =255 và M0 -> không phải là số
Nếu e =255 và M=0 -> Giá trị âm hoặc dương vô cùng
Nếu e =0 và M=0 -> giá trị bằng 0
Dải biểu diễn: 2-127 đến 2+127 hay tương đương 10-38 đến
10+38
Overflow Underflow Overflow
-2+127 2+127 2-127 -2-127
Biểu diễn số dấu chấm động
GV: Đinh Đồng Lưỡng
3.6 Biểu diễn ký tự.
Có hai bộ mã thường sử dụng trên máy tính:
Bộ mã ASSCII
Bộ mã Unicode
Bộ mã ASCII (American Standard Code for
Information Interchange)
Do ANSI (American National Standard Institute)
thiết kế
Bộ mã 8 bit -> mã hoá 28 ký tự có mã 00H ->FFH .
Trong đó
GV: Đinh Đồng Lưỡng
128 ký tự chuẩn cố định có mã (00H -> 7FH)
33 ký tự điều khiển không thể hiện thị nên màn hình.
Bao gồm các ký tự điều khiển định dạng văn bản, điều
khiển truyền số liệu và điều khiển phân cách thông tin.
Còn lại các ký tự còn lại hiển thị được là bao gồm:
26 ký tự hoa 41h -> 5Ah
26 ký tự thường 61h ->7Ah
10 ký tự số 30h ->39h
các dấu số học và ký tự đặc biệt.
3.6 Biểu diễn ký tự.
GV: Đinh Đồng Lưỡng
128 ký tự còn lại là ký tự mở rộng có thể thay đổi tuỳ ý
nhà chế tạo máy tính hay người phát triển phần mền sử
dụng vào những việc riêng. Có mã 80H -> FFH
Bộ mã hợp nhất Unicode:
Do các hãng máy tính hàng đầu thế giới kết hợp thiết
kế.
Bộ mã 16 bit có thể xây dựng bộ mã toàn cầu 216 ký tự
với 128 ký tự đầu có mã trùng mã trong bảng mã ASCII.
Có hỗ trợ các ký tự Tiếng Việt
3.6 Biểu diễn ký tự.
GV: Đinh Đồng Lưỡng
Phần trao đổi và giải đáp
GV: Đinh Đồng Lưỡng
Ôn tập chương 3
Các hệ đếm, ý nghĩa của chúng trong máy tính.
Mã hóa dữ liệu trong máy tính.
Mã hóa số nguyên(mã hóa số nguyên có và không
dấu).
Mã hóa số thực (số dấu chấm động)
Các thuật toán tính toán trên số học nhị phân
Mã hóa ký tự (ASCII, Unicode)
Lưu trữ dữ liệu trong máy tính
Mô phỏng hoạt động tính toán số học của ALU
GV: Đinh Đồng Lưỡng
Đặt câu hỏi
Câu 1: Kết quả hiển thi lên màn hình là bao nhiêu? Khi
thực hiện đoạn lệnh sau:
Var a: shortint;
Begin
a:=-1;
writeln(‘Gia tri a:=’,a);
writeln(‘Gia tri ngan nho:=’, mem[seg(a):ofs(a)]);
End.
Kết quả: -1 và 255
GV: Đinh Đồng Lưỡng
Đặt câu hỏi
Câu 2: Kết quả hiển thi lên màn hình là bao nhiêu? Khi
thực hiện đoạn lệnh sau:
Var a: shortint;
Begin
a:=-128;
writeln(‘Gia tri a:=’,a);
writeln(‘Gia tri ngan nho:=’, mem[seg(a):ofs(a)]);
End.
Kết quả: -128 và 128
GV: Đinh Đồng Lưỡng
Đặt câu hỏi
Câu 3: Kết quả hiển thi lên màn hình là bao nhiêu? Khi
thực hiện đoạn lệnh sau:
Var a: shortint;
Begin
a:=$6A;
writeln(‘Gia tri a:=’,a);
writeln(‘Gia tri ngan nho:=’, mem[seg(a):ofs(a)]);
End.
Kết quả: 106 và 106
GV: Đinh Đồng Lưỡng
Đặt câu hỏi
Câu 4: Kết quả hiển thi lên màn hình là bao nhiêu? Khi
thực hiện đoạn lệnh sau:
Var b : integer absolute 3715:100;
a : shortint absolute 3715:100;
Begin
b:=$00B5;
writeln(‘Gia tri a:=’,a);
writeln(‘Gia tri ngan nho:=’, mem[seg(a):ofs(a)]);
End.
Kết quả: -75 và 181
GV: Đinh Đồng Lưỡng
Đặt câu hỏi
Câu 5: Kết quả hiển thi lên màn hình là bao nhiêu? Khi thực hiện
đoạn lệnh sau:
Var b : integer absolute 3715:100;
a: shortint absolute 3715:100;
Begin
b:=-75;
writeln(‘Gia tri a:=’,a);
writeln(‘Gia tri ngan nho:=’, mem[seg(a):ofs(a)]);
writeln(‘Gia tri ngan nho:=’, mem[seg(a):ofs(a)+1]);
writeln(‘Gia tri ngan nho:=’, memw[seg(a):ofs(a)]);
End.
Kết quả: -75; 181; 255 và 65461
Các file đính kèm theo tài liệu này:
- chuong3.PDF