Tải bản đầy đủ (.ppt) (23 trang)

Số âm trong máy tính ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (665.03 KB, 23 trang )





Số âm trong máy tính
Số âm trong máy tính
Trong
Trong
toán học
toán học
, các số âm (bất kể thuộc
, các số âm (bất kể thuộc
hệ cơ số
hệ cơ số
nào) đều
nào) đều
được biểu diễn bằng cách thông thường là đặt trước số
được biểu diễn bằng cách thông thường là đặt trước số
dương tương ứng một dấu "−" (trừ). Ví dụ: với hệ thập phân,
dương tương ứng một dấu "−" (trừ). Ví dụ: với hệ thập phân,
số nguyên âm năm được biểu diễn là −5. Tuy nhiên, trong
số nguyên âm năm được biểu diễn là −5. Tuy nhiên, trong
máy tính
máy tính
, khi mọi ký hiệu, con số, đều được biểu diễn
, khi mọi ký hiệu, con số, đều được biểu diễn
dưới
dưới
hệ nhị phân
hệ nhị phân
thông qua hai chữ số 0 và 1 thì mọi chuyện


thông qua hai chữ số 0 và 1 thì mọi chuyện
lại trở nên phức tạp hơn.
lại trở nên phức tạp hơn.
Có nhiều cách được sử dụng để biểu diễn số âm trong máy
Có nhiều cách được sử dụng để biểu diễn số âm trong máy
tính. Bài này chỉ giới thiệu bốn phương pháp chủ yếu nhất,
tính. Bài này chỉ giới thiệu bốn phương pháp chủ yếu nhất,
đó là: phương pháp dấu lượng (
đó là: phương pháp dấu lượng (
sign-and-magnitude
sign-and-magnitude
),
),
bù 1
bù 1
,
,
bù 2
bù 2
và số quá
và số quá
N
N
(
(
excess-N
excess-N
).
).
Các máy tính hiện nay hầu hết đều sử dụng phương pháp

Các máy tính hiện nay hầu hết đều sử dụng phương pháp
biểu diễn số bù 2. Tuy nhiên, trong vài tình huống, các
biểu diễn số bù 2. Tuy nhiên, trong vài tình huống, các
phương pháp khác vẫn có thể được sử dụng.
phương pháp khác vẫn có thể được sử dụng.

Dấu lượng
Dấu lượng

Phương pháp dấu lượng dùng
Phương pháp dấu lượng dùng
bit cực trái
bit cực trái
làm
làm
bit dấu
bit dấu
(
(
sign
sign
bit
bit
) – tức đại diện cho dấu của số – theo quy ước: nếu bit dấu là
) – tức đại diện cho dấu của số – theo quy ước: nếu bit dấu là
0 thì số là số dương (0 tương đương với dấu "+"), ngược lại,
0 thì số là số dương (0 tương đương với dấu "+"), ngược lại,
nếu nó là 1 thì số là số âm (1 tương đương với dấu "−"). Các bit
nếu nó là 1 thì số là số âm (1 tương đương với dấu "−"). Các bit
còn lại được dùng để biểu diễn độ lớn của số (hay

còn lại được dùng để biểu diễn độ lớn của số (hay
giá trị tuyệt đối
giá trị tuyệt đối


absolute value
absolute value
– của số).
– của số).

Theo phương pháp này, một byte 8 bit sẽ có 7 bit (trừ đi bit
Theo phương pháp này, một byte 8 bit sẽ có 7 bit (trừ đi bit
dấu) được dùng để biểu diễn cho các số có giá trị từ 0000000
dấu) được dùng để biểu diễn cho các số có giá trị từ 0000000
(0) đến 1111111 (127). Khi sử dụng bit dấu, ý nghĩa của 7 bit
(0) đến 1111111 (127). Khi sử dụng bit dấu, ý nghĩa của 7 bit
trên sẽ thay đổi, và ta có thể biểu diễn các số từ −127 đến +127.
trên sẽ thay đổi, và ta có thể biểu diễn các số từ −127 đến +127.
Phương pháp này làm cho số âm lẫn trị tuyệt đối của nó (như
Phương pháp này làm cho số âm lẫn trị tuyệt đối của nó (như
−5 với +5) đều được biểu diễn theo cùng một cách ở 7 bit biểu
−5 với +5) đều được biểu diễn theo cùng một cách ở 7 bit biểu
diễn độ lớn. Trong phương pháp dấu lượng, số 0 có thể được
diễn độ lớn. Trong phương pháp dấu lượng, số 0 có thể được
biểu diễn ở hai dạng, đó là 00000000 (+0) và 10000000 (−0).
biểu diễn ở hai dạng, đó là 00000000 (+0) và 10000000 (−0).

Dấu lượng –Ví dụ
Dấu lượng –Ví dụ


Ví dụ: giả sử mẫu 8 bit, khi sử dụng phương pháp dấu lượng,
Ví dụ: giả sử mẫu 8 bit, khi sử dụng phương pháp dấu lượng,
số 5 được biểu diễn sang hệ nhị phân là: 00000101, còn số −5
số 5 được biểu diễn sang hệ nhị phân là: 00000101, còn số −5
là 10000101.
là 10000101.

So sánh với cách biểu diễn số âm mà ta thường sử dụng, ta
So sánh với cách biểu diễn số âm mà ta thường sử dụng, ta
thấy phương pháp dấu lượng có nhiều điểm tương đồng. Trong
thấy phương pháp dấu lượng có nhiều điểm tương đồng. Trong
hệ thập phân, khi muốn biểu diễn số có dấu, ta đặt dấu cần
hệ thập phân, khi muốn biểu diễn số có dấu, ta đặt dấu cần
biểu diễn ngay trước giá trị tuyệt đối của số. Phương pháp dấu
biểu diễn ngay trước giá trị tuyệt đối của số. Phương pháp dấu
lượng cũng đặt dấu ngay trước giá trị tuyệt đối của số, chỉ có
lượng cũng đặt dấu ngay trước giá trị tuyệt đối của số, chỉ có
khác ở chỗ thay dấu "+" bằng "0" và "−" bằng "1". Có lẽ vì sự
khác ở chỗ thay dấu "+" bằng "0" và "−" bằng "1". Có lẽ vì sự
tương đồng này, một vài máy tính thế hệ đầu tiên (như
tương đồng này, một vài máy tính thế hệ đầu tiên (như
IBM 7090
IBM 7090
) đã sử dụng phương pháp dấu lượng khi biểu diễn
) đã sử dụng phương pháp dấu lượng khi biểu diễn
số âm.
số âm.

Phương pháp bù 1
Phương pháp bù 1


Phương pháp bù 1 biểu diễn số âm theo cách sau:
Phương pháp bù 1 biểu diễn số âm theo cách sau:

Thứ nhất, bit dấu là 0 nếu số là số dương, và 1 nếu số là số âm.
Thứ nhất, bit dấu là 0 nếu số là số dương, và 1 nếu số là số âm.

Thứ hai, sử dụng
Thứ hai, sử dụng
toán tử thao tác bit
toán tử thao tác bit
(bitwise)
(bitwise)
NOT
NOT
để đảo tất cả
để đảo tất cả
các bit của số nhị phân dương (dĩ nhiên không tính bit dấu) để biểu
các bit của số nhị phân dương (dĩ nhiên không tính bit dấu) để biểu
diễn số âm tương ứng.
diễn số âm tương ứng.

Như vậy, phương pháp bù 1 hoàn toàn giống như phương pháp dấu
Như vậy, phương pháp bù 1 hoàn toàn giống như phương pháp dấu
lượng, duy chỉ khác ở cách biểu diễn độ lớn của số.
lượng, duy chỉ khác ở cách biểu diễn độ lớn của số.

Ví dụ: dạng bù 1 của 00101011 (43) là 11010100(−43) (
Ví dụ: dạng bù 1 của 00101011 (43) là 11010100(−43) (
xem

xem
bài chính về bù 1
bài chính về bù 1
để biết cách biểu diễn số thập phân sang nhị
để biết cách biểu diễn số thập phân sang nhị
phân bằng phương pháp bù 1
phân bằng phương pháp bù 1
).
).

Giống phương pháp dấu lượng, một byte 8 bit áp dụng phương
Giống phương pháp dấu lượng, một byte 8 bit áp dụng phương
pháp bù 1 cũng có thể biểu diễn các số từ −127 đến +127 (chú ý: đã
pháp bù 1 cũng có thể biểu diễn các số từ −127 đến +127 (chú ý: đã
mất đi một bit dùng làm bit dấu). Bù 1 cũng có hai dạng biểu diễn
mất đi một bit dùng làm bit dấu). Bù 1 cũng có hai dạng biểu diễn
cho số 0, bao gồm: 00000000 (+0) và 11111111 (−0) (mẫu 8 bit).
cho số 0, bao gồm: 00000000 (+0) và 11111111 (−0) (mẫu 8 bit).

Bù 1 ( tt)
Bù 1 ( tt)

Khi thực hiện phép cộng giữa hai số biểu diễn theo
Khi thực hiện phép cộng giữa hai số biểu diễn theo
phương pháp bù 1, ta cũng thực hiện theo quy tắc
phương pháp bù 1, ta cũng thực hiện theo quy tắc
cộng nhị phân thông thường, tuy nhiên, sau khi đã
cộng nhị phân thông thường, tuy nhiên, sau khi đã
thực hiện xong, nếu còn phát sinh bit nhớ thì phải tiếp
thực hiện xong, nếu còn phát sinh bit nhớ thì phải tiếp

tục cộng bit nhớ này vào kết quả vừa thu được. Về
tục cộng bit nhớ này vào kết quả vừa thu được. Về
vấn đề này, xin xem thêm ở
vấn đề này, xin xem thêm ở
bài chính về bù 1
bài chính về bù 1
.
.

Phương pháp biểu diễn số bù 1 được sử dụng rộng rãi
Phương pháp biểu diễn số bù 1 được sử dụng rộng rãi
trong các thế hệ máy tính cũ, điển hình là các dòng
trong các thế hệ máy tính cũ, điển hình là các dòng
máy
máy
PDP-1
PDP-1


UNIVAC 1100/2200
UNIVAC 1100/2200
.
.

Bù 1 (tt)
Bù 1 (tt)

Bù 1
Bù 1
(

(
tiếng Anh
tiếng Anh
:
:
one's complement
one's complement
) là một số trong hệ
) là một số trong hệ
nhị phân
nhị phân
mà nó
mà nó
chính là
chính là
bù cơ số trừ 1
bù cơ số trừ 1
(
(
radix-minus-1 complement
radix-minus-1 complement
) của một số khác. Một
) của một số khác. Một
số bù 1 có thể có được do đảo tất cả các
số bù 1 có thể có được do đảo tất cả các
bit
bit
có trong số nhị phân (đổi 1
có trong số nhị phân (đổi 1
thành 0 và ngược lại).

thành 0 và ngược lại).

Bên cạnh phương pháp
Bên cạnh phương pháp
bù 2
bù 2
, bù 1 cũng thường được sử dụng để biểu diễn
, bù 1 cũng thường được sử dụng để biểu diễn
số âm
số âm
trong
trong
máy tính
máy tính
. Theo phương pháp này, bit cực trái (là bit nằm bên
. Theo phương pháp này, bit cực trái (là bit nằm bên
trái cùng của byte) được sử dụng làm bit dấu (
trái cùng của byte) được sử dụng làm bit dấu (
sign bit
sign bit
- là bit tượng trưng
- là bit tượng trưng
cho dấu của số) với quy ước: nếu bit dấu là 0 thì số là số dương, còn nếu
cho dấu của số) với quy ước: nếu bit dấu là 0 thì số là số dương, còn nếu
nó là 1 thì số là
nó là 1 thì số là
số âm
số âm
. Ngoài bit dấu này ra, các bit còn lại được dùng để
. Ngoài bit dấu này ra, các bit còn lại được dùng để

diểu diễn độ lớn của số.
diểu diễn độ lớn của số.

Ví dụ: số −5 được biểu diễn trong máy tính theo phương pháp bù 1 như
Ví dụ: số −5 được biểu diễn trong máy tính theo phương pháp bù 1 như
sau (với mẫu 8 bit): đầu tiên, xác định số 5 được biểu diễn trong máy tính:
sau (với mẫu 8 bit): đầu tiên, xác định số 5 được biểu diễn trong máy tính:
0000 0101. Tiếp theo, đảo tất cả các bit có trong số 5: kết quả sau khi đảo:
0000 0101. Tiếp theo, đảo tất cả các bit có trong số 5: kết quả sau khi đảo:
1111 1010. Vì là biểu diễn số âm nên bit bên trái cùng luôn giữ là 1.
1111 1010. Vì là biểu diễn số âm nên bit bên trái cùng luôn giữ là 1.

Vậy với phương pháp bù 1, số −5 được biểu diễn trong máy tính như sau:
Vậy với phương pháp bù 1, số −5 được biểu diễn trong máy tính như sau:
1111 1010.
1111 1010.

Bù 1 (tt)
Bù 1 (tt)

Khi thực hiện phép tính cộng với số âm biểu
Khi thực hiện phép tính cộng với số âm biểu
diễn theo phương pháp bù 2, ta thực hiện như
diễn theo phương pháp bù 2, ta thực hiện như
phép cộng nhị phân
phép cộng nhị phân
bình thường. Trong trường
bình thường. Trong trường
hợp khi đã thực hiện phép cộng đến bit cực trái
hợp khi đã thực hiện phép cộng đến bit cực trái

mà vẫn phát sinh
mà vẫn phát sinh
bit nhớ
bit nhớ
thì ta cộng tiếp bit
thì ta cộng tiếp bit
nhớ này vào kết quả vừa nhận được.
nhớ này vào kết quả vừa nhận được.

Ví dụ:
Ví dụ:

1. Cộng hai số thập phân −5 với 2 (mẫu 8 bit):
1. Cộng hai số thập phân −5 với 2 (mẫu 8 bit):

Ví dụ
Ví dụ



1111 1010 (số bù 1 của −5)
1111 1010 (số bù 1 của −5)

+ 0000 0010 (số 2 ở hệ nhị phân)
+ 0000 0010 (số 2 ở hệ nhị phân)
===========
===========




1111 1100 (số bù 1 của −3)
1111 1100 (số bù 1 của −3)

Công bù với 8 bits
Công bù với 8 bits
2. Cộng hai số thập phân −5 với −7 (mẫu 8 bit):
2. Cộng hai số thập phân −5 với −7 (mẫu 8 bit):




1111 1010 (số bù 1 của −5)
1111 1010 (số bù 1 của −5)


+ 1111 1000 (số bù 1 của −7)
+ 1111 1000 (số bù 1 của −7)


===========
===========


1111 0010 (còn nhớ 1)
1111 0010 (còn nhớ 1)


+ 1 (cộng tiếp với bit nhớ)
+ 1 (cộng tiếp với bit nhớ)



===========
===========


1111 0011 (số bù 1 của −12)
1111 0011 (số bù 1 của −12)

Ví dụ
Ví dụ

Ta thấy: khi cộng hai bit cực trái của hai
Ta thấy: khi cộng hai bit cực trái của hai
số 1111 1010 và 1111 1000, ta được kết
số 1111 1010 và 1111 1000, ta được kết
quả là 1111 0011 và còn nhớ 1, do đó, ta
quả là 1111 0011 và còn nhớ 1, do đó, ta
tiếp tục cộng bit nhớ vào kết quả vừa
tiếp tục cộng bit nhớ vào kết quả vừa
nhận được để ra kết quả cuối cùng
nhận được để ra kết quả cuối cùng

Bù 1 và tràn số
Bù 1 và tràn số

Xét trường hợp ta đang có hai số âm −5
Xét trường hợp ta đang có hai số âm −5
và −6 ở hệ thập phân. Biểu diễn nhị phân
và −6 ở hệ thập phân. Biểu diễn nhị phân
bằng phương pháp bù 1 với

bằng phương pháp bù 1 với
mẫu 4 bit
mẫu 4 bit


của hai số trên lần lượt là 1010 và 1001.
của hai số trên lần lượt là 1010 và 1001.
Giả sử, bây giờ, ta cần cộng hai số này.
Giả sử, bây giờ, ta cần cộng hai số này.

Ta thực hiện phép cộng:
Ta thực hiện phép cộng:

Bù 1 và tràn số (tt)
Bù 1 và tràn số (tt)


1010 (số bù 1 của −5)
1010 (số bù 1 của −5)


+ 1001 (số bù 1 của −6)
+ 1001 (số bù 1 của −6)


======
======


0011 (còn nhớ 1)

0011 (còn nhớ 1)


+ 1
+ 1


======
======


0100
0100

Ta thấy, kết quả nhận được là 0100. Nếu đổi ra hệ thập phân,
Ta thấy, kết quả nhận được là 0100. Nếu đổi ra hệ thập phân,
đây là số nguyên dương 4 chứ không phải −11 như mong đợi.
đây là số nguyên dương 4 chứ không phải −11 như mong đợi.
Vấn đề như trên được gọi là tràn số. Nó xảy ra khi ta lấy số
Vấn đề như trên được gọi là tràn số. Nó xảy ra khi ta lấy số
lượng bit để biểu diễn quá ít (như trong ví dụ trên là mẫu 4
lượng bit để biểu diễn quá ít (như trong ví dụ trên là mẫu 4
bit).
bit).

Bù 2
Bù 2

Trong phương pháp bù 2, các số âm được biểu diễn giống như
Trong phương pháp bù 2, các số âm được biểu diễn giống như

phương pháp bù 1, tuy nhiên, phải cộng thêm 1 vào kết quả (ở
phương pháp bù 1, tuy nhiên, phải cộng thêm 1 vào kết quả (ở
hệ nhị phân).
hệ nhị phân).

Ví dụ: số −5 được biểu diễn sang hệ nhị phân (xét mẫu 8 bit)
Ví dụ: số −5 được biểu diễn sang hệ nhị phân (xét mẫu 8 bit)
sử dụng phương pháp bù 1 là 11111010. Để biểu diễn theo
sử dụng phương pháp bù 1 là 11111010. Để biểu diễn theo
phương pháp bù 2, ta cộng thêm 1 vào số nhị phân ở bù 1, tức
phương pháp bù 2, ta cộng thêm 1 vào số nhị phân ở bù 1, tức
cộng 1 cho 11111010: 11111010 + 1 = 11111011. Vậy
cộng 1 cho 11111010: 11111010 + 1 = 11111011. Vậy
11111011 là biểu diễn bằng bù 2 của −5 trong máy tính.
11111011 là biểu diễn bằng bù 2 của −5 trong máy tính.

Phương pháp biểu diễn số bù 2 ra đời khi người ta gặp vấn đề
Phương pháp biểu diễn số bù 2 ra đời khi người ta gặp vấn đề
với hai phương pháp dấu lượng và bù 1, đó là:
với hai phương pháp dấu lượng và bù 1, đó là:

Có hai cách biểu diễn cho số 0.
Có hai cách biểu diễn cho số 0.

Bit nhớ phát sinh sau khi đã thực hiện phép tính phải được
Bit nhớ phát sinh sau khi đã thực hiện phép tính phải được
cộng tiếp vào kết quả.
cộng tiếp vào kết quả.

Bù 2 (tt)

Bù 2 (tt)

Với phương pháp bù 2, số 0 chỉ có một cách biểu diễn duy
Với phương pháp bù 2, số 0 chỉ có một cách biểu diễn duy
nhất là 00000000 (mẫu 8 bit). Việc đổi dấu một số – kể cả từ
nhất là 00000000 (mẫu 8 bit). Việc đổi dấu một số – kể cả từ
âm sang dương hay từ dương sang âm – đều được thực hiện
âm sang dương hay từ dương sang âm – đều được thực hiện
theo cùng một cách, đó là: đảo tất cả các bit rồi cộng thêm một
theo cùng một cách, đó là: đảo tất cả các bit rồi cộng thêm một
vào kết quả. Việc thực hiện phép cộng với số biểu diễn theo
vào kết quả. Việc thực hiện phép cộng với số biểu diễn theo
phương pháp bù 2 được thực hiện hoàn toàn giống như cộng
phương pháp bù 2 được thực hiện hoàn toàn giống như cộng
hai số nhị phân bình thường, tuy nhiên, khi phát sinh bit nhớ ở
hai số nhị phân bình thường, tuy nhiên, khi phát sinh bit nhớ ở
bit dấu, ta có thể bỏ nó đi. Về vấn đề này, xin xem thêm ở
bit dấu, ta có thể bỏ nó đi. Về vấn đề này, xin xem thêm ở
bài chính về bù 2
bài chính về bù 2
.
.

Với mẫu 8 bit, phương pháp bù 2 có thể biểu diễn tốt các số
Với mẫu 8 bit, phương pháp bù 2 có thể biểu diễn tốt các số
nguyên có giá trị từ −128 đến +127 (so với từ −127 đến +127
nguyên có giá trị từ −128 đến +127 (so với từ −127 đến +127
theo phương pháp dấu lượng và bù 1) do được lợi từ việc tiết
theo phương pháp dấu lượng và bù 1) do được lợi từ việc tiết
kiệm được một cách biểu diễn số 0 (không phân biệt giữa −0

kiệm được một cách biểu diễn số 0 (không phân biệt giữa −0
và +0).
và +0).

Bù 2 (tt)
Bù 2 (tt)

Bù 2
Bù 2
(
(
tiếng Anh
tiếng Anh
:
:
two's complement
two's complement
) là một số trong hệ
) là một số trong hệ
nhị phân
nhị phân


bù đúng
bù đúng
(
(
true complement
true complement
) của một số khác. Một

) của một số khác. Một
số bù 2 có được do đảo tất cả các
số bù 2 có được do đảo tất cả các
bit
bit
có trong số nhị phân (đổi
có trong số nhị phân (đổi
1 thành 0 và ngược lại) rồi thêm 1 vào kết quả vừa đạt được.
1 thành 0 và ngược lại) rồi thêm 1 vào kết quả vừa đạt được.
Thực chất, số biểu diễn ở dạng bù 2 là số biểu diễn ở
Thực chất, số biểu diễn ở dạng bù 2 là số biểu diễn ở
bù 1
bù 1
rồi
rồi
sau đó
sau đó
cộng
cộng
thêm 1.
thêm 1.

Phương pháp bù 2 thường được sử dụng để
Phương pháp bù 2 thường được sử dụng để
biểu diễn số âm trong máy tính
biểu diễn số âm trong máy tính
. Theo phương pháp này, bit
. Theo phương pháp này, bit
cực trái (là bit nằm bên trái cùng của byte) được sử dụng làm
cực trái (là bit nằm bên trái cùng của byte) được sử dụng làm

bit dấu (
bit dấu (
sign bit
sign bit
- là bit tượng trưng cho dấu của số) với quy
- là bit tượng trưng cho dấu của số) với quy
ước: nếu bit dấu là 0 thì số là số dương, còn nếu nó là 1 thì số
ước: nếu bit dấu là 0 thì số là số dương, còn nếu nó là 1 thì số


số âm
số âm
. Ngoài bit dấu này ra, các bit còn lại được dùng để
. Ngoài bit dấu này ra, các bit còn lại được dùng để
diểu diễn độ lớn của số.
diểu diễn độ lớn của số.

Ví dụ
Ví dụ

Ví dụ: số nguyên −5 ở hệ thập phân được biểu diễn
Ví dụ: số nguyên −5 ở hệ thập phân được biểu diễn
trong máy tính theo phương pháp bù 2 như sau (với
trong máy tính theo phương pháp bù 2 như sau (với
mẫu 8 bit):
mẫu 8 bit):

Bước 1: xác định số nguyên 5 ở hệ thập phân được biểu diễn
Bước 1: xác định số nguyên 5 ở hệ thập phân được biểu diễn
trong máy tính là: 0000 0101.

trong máy tính là: 0000 0101.

Bước 2: đảo tất cả các bit nhận được ở bước 1. Kết quả sau khi
Bước 2: đảo tất cả các bit nhận được ở bước 1. Kết quả sau khi
đảo là: 1111 1010.
đảo là: 1111 1010.

Bước 3: cộng thêm 1 vào kết quả thu được ở bước 2: kết quả sau
Bước 3: cộng thêm 1 vào kết quả thu được ở bước 2: kết quả sau
khi cộng: 1111 1011.
khi cộng: 1111 1011.

Bước 4: vì là biểu diễn số âm nên bit bên trái cùng luôn giữ là 1.
Bước 4: vì là biểu diễn số âm nên bit bên trái cùng luôn giữ là 1.

Vậy với phương pháp bù 2, số −5 ở hệ thập phân được biểu
Vậy với phương pháp bù 2, số −5 ở hệ thập phân được biểu
diễn trong máy tính như sau: 1111 1011.
diễn trong máy tính như sau: 1111 1011.


Ngoài cách làm theo định nghĩa như trên ra, ta
Ngoài cách làm theo định nghĩa như trên ra, ta
còn có thể áp dụng phương pháp bù 2 theo quy
còn có thể áp dụng phương pháp bù 2 theo quy
tắc sau: với biểu diễn nhị phân của một số
tắc sau: với biểu diễn nhị phân của một số
dương cho trước, để biểu diễn số âm tương
dương cho trước, để biểu diễn số âm tương
ứng, ta bắt đầu tìm từ phải sang trái cho đến

ứng, ta bắt đầu tìm từ phải sang trái cho đến
khi gặp bit đầu tiên có giá trị 1. Khi gặp được
khi gặp bit đầu tiên có giá trị 1. Khi gặp được
bit này, ta đảo tất cả các bit từ ngay kề trước
bit này, ta đảo tất cả các bit từ ngay kề trước
nó (tức trước bit có giá trị 1 vừa nói tới) cho
nó (tức trước bit có giá trị 1 vừa nói tới) cho
đến bit cực trái, và luôn nhớ: bit cực trái là 1.
đến bit cực trái, và luôn nhớ: bit cực trái là 1.


Ví dụ: ta cũng biểu diễn lại số nguyên −5 ở hệ thập
Ví dụ: ta cũng biểu diễn lại số nguyên −5 ở hệ thập
phân sang hệ nhị phân theo quy tắc mới này (giả sử
phân sang hệ nhị phân theo quy tắc mới này (giả sử
với mẫu 8 bit):
với mẫu 8 bit):

Bước 1: xác định số nguyên 5 ở hệ thập phân được biểu diễn
Bước 1: xác định số nguyên 5 ở hệ thập phân được biểu diễn
trong máy tính là: 0000 0101.
trong máy tính là: 0000 0101.

Bước 2: bắt đầu tìm (từ phải qua trái) bit đầu tiên có giá trị 1, ta
Bước 2: bắt đầu tìm (từ phải qua trái) bit đầu tiên có giá trị 1, ta
thấy, đó là bit thứ nhất (tính từ phải qua).
thấy, đó là bit thứ nhất (tính từ phải qua).

Bước 3: đảo tất cả các bit nằm trước bit thu được ở bước 2. Kết
Bước 3: đảo tất cả các bit nằm trước bit thu được ở bước 2. Kết

quả nhận được: 1111 1011
quả nhận được: 1111 1011

Bước 4: vì là biểu diễn số âm nên bit bên trái cùng luôn giữ là 1.
Bước 4: vì là biểu diễn số âm nên bit bên trái cùng luôn giữ là 1.

Vậy số −5 ở hệ thập phân được biểu diễn trong máy tính
Vậy số −5 ở hệ thập phân được biểu diễn trong máy tính
theo phương pháp bù 2 là: 1111 1011 (hoàn toàn giống như
theo phương pháp bù 2 là: 1111 1011 (hoàn toàn giống như
kết quả trong ví dụ trên).
kết quả trong ví dụ trên).

Thực hiện phép cộng với số bù 2
Thực hiện phép cộng với số bù 2

Khi thực hiện phép tính cộng với số âm biểu
Khi thực hiện phép tính cộng với số âm biểu
diễn theo phương pháp bù 2, ta thực hiện như
diễn theo phương pháp bù 2, ta thực hiện như
phép cộng nhị phân bình thường, tuy nhiên,
phép cộng nhị phân bình thường, tuy nhiên,
trong trường hợp khi đã thực hiện phép cộng
trong trường hợp khi đã thực hiện phép cộng
đến bit cực trái mà vẫn phát sinh bit nhớ thì ta
đến bit cực trái mà vẫn phát sinh bit nhớ thì ta
bỏ bit nhớ này đi.
bỏ bit nhớ này đi.

Ví dụ:

Ví dụ:

1. Cộng hai số thập phân −5 với 2 (mẫu 8 bit):
1. Cộng hai số thập phân −5 với 2 (mẫu 8 bit):

Ví dụ
Ví dụ
Ví dụ:
Ví dụ:
1.
1.
Cộng hai số thập phân −5 với 2 (mẫu 8 bit):
Cộng hai số thập phân −5 với 2 (mẫu 8 bit):


1111 1011 (số bù 2 của −5)
1111 1011 (số bù 2 của −5)


+ 0000 0010 (số 2 ở hệ nhị phân)
+ 0000 0010 (số 2 ở hệ nhị phân)
===========
===========


1111 1101 (số bù của −3)
1111 1101 (số bù của −3)

Ví dụ
Ví dụ

Cộng hai số thập phân −5 với −7 (mẫu 8
Cộng hai số thập phân −5 với −7 (mẫu 8
bit):
bit):


1111 1011 (số bù 2 của −5)
1111 1011 (số bù 2 của −5)
+ 1111 1001 (số bù 2 của −7)
+ 1111 1001 (số bù 2 của −7)


===========
===========


1111 0100 (số bù của −12)
1111 0100 (số bù của −12)

Tràn Số
Tràn Số
Xét trường hợp ta đang có hai số âm −6 và
Xét trường hợp ta đang có hai số âm −6 và
−4 ở hệ thập phân. Biểu diễn nhị phân
−4 ở hệ thập phân. Biểu diễn nhị phân
bằng phương pháp bù 2 với mẫu 4 bit của
bằng phương pháp bù 2 với mẫu 4 bit của
hai số trên lần lượt là 1010 và 1100. Giả
hai số trên lần lượt là 1010 và 1100. Giả
sử, bây giờ, ta cần cộng hai số này.

sử, bây giờ, ta cần cộng hai số này.
Ta thực hiện phép cộng:
Ta thực hiện phép cộng:

Tràn số (tt)
Tràn số (tt)


1010 (số bù 2 của −6)
1010 (số bù 2 của −6)
+ 1100 (số bù 2 của −4)
+ 1100 (số bù 2 của −4)


======
======


0110
0110
Ta thấy, kết quả nhận được là 0110. Nếu đổi
Ta thấy, kết quả nhận được là 0110. Nếu đổi
ra hệ thập phân, đây là số nguyên dương 6
ra hệ thập phân, đây là số nguyên dương 6
chứ không phải −10 như mong đợi.
chứ không phải −10 như mong đợi.

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×