Sử dụng 8bit tìm giá trị biểu diễn số nguyên có dấu 81 theo dạng bù 2

By Trần Duy Thanh on January 2, 2012


Để biểu diễn số Âm trong máy tính thông thường người ta sử dụng phương pháp Bù 2.

Topic này được viết để bổ sung kiến thức cho Topic //duythanhcse.wordpress.com/2012/01/01/cac-vi-d%E1%BB%A5-v%E1%BB%81-java-assignment-operator/ [Java Assignment Operator]

Theo phương pháp này, bit cực trái hay còn gọi là bit nằm bên trái cùng của byte được sử dụng làm bit dấu [ là bit tượng trung cho dấu của số – sign bit]. Người ta quy ước: Nếu bit dấu là 0 thì số là số dương, nếu bit dấu là 1 thì số là số âm. Ngoài bit dấu này ra, các bit còn lại được dùng để biểu diễn độ lớn của số.

Ví dụ 1:

Tôi lấy số -45 ở hệ thập phân, số này sẽ được biểu diễn trong máy tính theo phương pháp bù 2 như sau [ Tôi chọn mẫu 8 bit]:

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

Bước 2: Đảo tất cả các bit nhận được ở bước 1. Kết quả bạn sẽ được: 1101 0010

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: 1101 0011

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

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

Ví dụ 2:

Tôi lấy số nguyên -5 ở hệ thập phân, nó sẽ được biểu diễn trong máy tính theo phương pháp bù 2 như sau [ cũng lấy mẫu 8 bit]:

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

Bước 2: Đảo tất cả các bit nhận được ở bước 1. Ta được như sau: 1111 1010

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

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

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

Để giúp các bạn hiểu rõ hơn, Tôi sẽ thực hiện 2 phép cộng số thập phân âm [ 00000010

Tiến hành cộng thêm 1 vào 00000010, như vậy ta được 00000011. Ta đổi qua hệ thập phân = 2^1 +2^0 =2+1 =3, cộng với dấu đằng trước của nó là dấu Âm, do đó 1  1 1 1  1 1  0 1 sẽ có giá trị là -3

Ví dụ 4: Tôi  sẽ cộng số -5 với -7 [cũng dùng mẫu 8 bit]

Cũng dùng phương pháp bù 2 để biểu diệ n-5 và -7 thành số nhị phân, Số -5 bạn đã biết nó có giá trị 1111 1011. Còn số -7 nếu bạn chưa biết biểu diễn thì bạn chưa hiểu cách tính, bạn phải coi lại 4 bước bên trên. Coi lại mà chưa hiểu tiếp thì chắc ăn Tôi sẽ biểu diện lại cho bạn xem bên dưới:

Bước 1: Xác định số nguyên 7 bên hệ thập phân được biểu diễn sang nhị phân là: 0000 0111

Bước 2: Đảo tất cả các bit nhận được từ bước 1, ta sẽ được: 1111 1 000

Bước 3: Cộng 1 vào kết quả nhận được ở bước 2, ta được: 1111 1001

Bước 4: Vì là số âm nên bit cực trái là 1

Như vậy số -7 được biểu diễn đưới dạng nhị phân trong máy tính là: 1111 1001

Bây giờ ta tiến hành Cộng -5 và -7

1111 1011 + 1111 1001 —————–

1111 0100

Bạn để ý rằng, khi cộng 2 bit cực trái của 2 số trên, ta vẫn còn nhớ 1, Nhưng mà trong kết quả này ta bỏ bit dấu này đi

Bây giờ cũng tương tự, Tôi hỏi lại các bạn số nhị phân 1111 0100 thì số thập phân của nó là bao nhiêu?

Tôi sẽ một lần nữa làm lại cho các bạn: Tiến hành đảo bit 1111 0100 bạn sẽ được 0000 1011 , sau đó cộng 1 vào ta được 0000 1100

Như vậy bạn sẽ được 2^3+ 2^2 =8+4=12, với bit dấu là âm, Tức là ta được kết quả -12.

Chúc các bạn Thành Công.

Phần I: Tin học căn bản

[Bài 21-40]

[Ấn vào đáp án bạn cho là đúng để xem kết quả]

Câu 21: Cần bao nhiêu khối nhớ 8 KB để có dung lượng 1 MB? a. 64b. 512 c. 256 d. 128

a Sai 1 MB=2^10 KB = 2^7 * [8 KB]=128*[8KB]

Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

b Sai 1 MB=2^10 KB = 2^7 * [8 KB]=128*[8KB]

Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

c Sai 1 MB=2^10 KB = 2^7 * [8 KB]=128*[8KB]

Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

d Đúng 1 MB=2^10 KB = 2^7 * [8 KB]=128*[8KB]

Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

Câu 22: 1 Megabyte bằng? a. 210 B. b. 210 TB.c. 210 KB. d. 220 KB.

a Sai Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

b Sai Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

c Đúng Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

d Sai Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

Câu 23: Một Gigabyte bằng? a. 1024 KB b. 220 Bc. 210 KB d. 220 KB

a Sai
Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

b Sai
Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

c Sai
Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

d Đúng
Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

Câu 24: Một Terabyte bằng? a. 210 GB b. 210 MBc. 1000 MB d. 1000 GB

a Đúng
Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

b Sai
Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

c Sai
Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

d Sai
Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

Câu 25: Trong các giá trị thể hiện kích thước file như sau, giá trị nào lớn nhất?
a. 100 KB b. 1 GBc. 211 MB d. 1000 MB

a Sai 100 KB < 1000 MB < 1 GB < 2^11 MB

Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

b Sai 100 KB < 1000 MB < 1 GB < 2^11 MB

Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

c Đúng 100 KB < 1000 MB < 1 GB < 2^11 MB

Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

d Sai 100 KB < 1000 MB < 1 GB < 2^11 MB

Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

Câu 26: Trong các giá trị thể hiện kích thước file như sau, giá trị nào nhỏ nhất?
a. 1000 B b. 100 KBc. 10 MB d. 1 GB

a Đúng 1000 B < 100 KB < 10 MB < 1 GB

Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

b Sai 1000 B < 100 KB < 10 MB < 1 GB

Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

c Sai 1000 B < 100 KB < 10 MB < 1 GB

Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

d Sai 1000 B < 100 KB < 10 MB < 1 GB

Kiến thức: 1TB=2^10 GB=2^20 MG=2^30 KB=2^40 B và 1B=8bit.

Câu 27: Sử dụng 4 bit nhị phân để biểu diễn số nguyên không dấu. Hỏi giá trị nguyên lớn nhất có thể biểu diễn là bao nhiêu?
a. 16. b. 15.c. 8. d. 7.

a Sai
Lý thuyết:
Với n bit nhị phân ta có dải biểu diễn số nguyên không dấu là [0;2n-1]
Vậy với 4 bit thì biểu diễn không dấu được số nguyên lớn nhất là 24-1=15Xem thêm lý thuyết tại đây:Dải biểu diễn số nguyên

b Đúng
Lý thuyết:
Với n bit nhị phân ta có dải biểu diễn số nguyên không dấu là [0;2n-1]
Vậy với 4 bit thì biểu diễn không dấu được số nguyên lớn nhất là 24-1=15Xem thêm lý thuyết tại đây:Dải biểu diễn số nguyên

c Sai
Lý thuyết:
Với n bit nhị phân ta có dải biểu diễn số nguyên không dấu là [0;2n-1]
Vậy với 4 bit thì biểu diễn không dấu được số nguyên lớn nhất là 24-1=15Xem thêm lý thuyết tại đây:Dải biểu diễn số nguyên

d Sai
Lý thuyết:
Với n bit nhị phân ta có dải biểu diễn số nguyên không dấu là [0;2n-1]
Vậy với 4 bit thì biểu diễn không dấu được số nguyên lớn nhất là 24-1=15Xem thêm lý thuyết tại đây:Dải biểu diễn số nguyên

Câu 28: Sử dụng 4 bit nhị phân để biểu diễn số nguyên có dấu. Hỏi giá trị nguyên lớn nhất có thể biểu diễn là bao nhiêu?
a. 16 b. 15c. 8 d. 7

a Sai Lý thuyết:
Với n bit nhị phân ta có dải biểu diễn số nguyên có dấu là [-2n-1;2n-1-1]
Vậy với 4 bit thì biểu diễn có dấu được số nguyên lớn nhất là 24-1-1=7 Xem thêm lý thuyết tại đây:Dải biểu diễn số nguyên

b Sai Lý thuyết:
Với n bit nhị phân ta có dải biểu diễn số nguyên có dấu là [-2n-1;2n-1-1]
Vậy với 4 bit thì biểu diễn có dấu được số nguyên lớn nhất là 24-1-1=7 Xem thêm lý thuyết tại đây:Dải biểu diễn số nguyên

c Sai Lý thuyết:
Với n bit nhị phân ta có dải biểu diễn số nguyên có dấu là [-2n-1;2n-1-1]
Vậy với 4 bit thì biểu diễn có dấu được số nguyên lớn nhất là 24-1-1=7 Xem thêm lý thuyết tại đây:Dải biểu diễn số nguyên

d Đúng Lý thuyết:
Với n bit nhị phân ta có dải biểu diễn số nguyên có dấu là [-2n-1;2n-1-1]
Vậy với 4 bit thì biểu diễn có dấu được số nguyên lớn nhất là 24-1-1=7 Xem thêm lý thuyết tại đây:Dải biểu diễn số nguyên

Câu 29: Sử dụng 11 bit để biểu diễn một số nguyên có dấu, dải biểu diễn sẽ là?
a. -1024 tới +1023 b. -2048 tới +2047c. -1024 tới +1024 d. -2048 tới +2048

a Đúng Lý thuyết:
Với n bit nhị phân ta có dải biểu diễn số nguyên có dấu là [-2n-1;2n-1-1]
Vậy với 11 bit thì biểu diễn có dấu với dải biểu diễn là [-211-1;211-1-1]=[-1024;+1023] Xem thêm lý thuyết tại đây:Dải biểu diễn số nguyên

b Sai Lý thuyết:
Với n bit nhị phân ta có dải biểu diễn số nguyên có dấu là [-2n-1;2n-1-1]
Vậy với 11 bit thì biểu diễn có dấu với dải biểu diễn là [-211-1;211-1-1]=[-1024;+1023] Xem thêm lý thuyết tại đây:Dải biểu diễn số nguyên

c Sai Lý thuyết:
Với n bit nhị phân ta có dải biểu diễn số nguyên có dấu là [-2n-1;2n-1-1]
Vậy với 11 bit thì biểu diễn có dấu với dải biểu diễn là [-211-1;211-1-1]=[-1024;+1023] Xem thêm lý thuyết tại đây:Dải biểu diễn số nguyên

d Sai Lý thuyết:
Với n bit nhị phân ta có dải biểu diễn số nguyên có dấu là [-2n-1;2n-1-1]
Vậy với 11 bit thì biểu diễn có dấu với dải biểu diễn là [-211-1;211-1-1]=[-1024;+1023] Xem thêm lý thuyết tại đây:Dải biểu diễn số nguyên

Câu 30: Một số nguyên có dấu biểu diễn dưới dạng số nguyên 8 bit là 01010101. Giá trị của số đó trong hệ thập phân là?
a. +85 b. -85c. -43 d. +43

a Đúng
Cách 1:_Trước tiên ta có 8 bit nhị phân biểu diễn số nguyên có dấuthì dải biểu diễn là [-128;127]

_Ta có:010101012=8510

Vì 85 ∈ [-128;127] nên giá trị cần tìm là +85

Cách 2:

_Với 8 bit ta thấy 0101 0101 đủ 8 bit [không có bit nào bị thừa]_Mặt khác bit đầu tiên là 0 biểu thị cho số dương nên ta chỉ cần đổi 0101 0101 về hệ thập phân là được kết quả.

_Ta có: 010101012=8510.


Vậy +85 là giá trị cần tìm.

b Sai
Cách 1:_Trước tiên ta có 8 bit nhị phân biểu diễn số nguyên có dấuthì dải biểu diễn là [-128;127]

_Ta có:010101012=8510

Vì 85 ∈ [-128;127] nên giá trị cần tìm là +85

Cách 2:

_Với 8 bit ta thấy 0101 0101 đủ 8 bit [không có bit nào bị thừa]_Mặt khác bit đầu tiên là 0 biểu thị cho số dương nên ta chỉ cần đổi 0101 0101 về hệ thập phân là được kết quả.

_Ta có: 010101012=8510.


Vậy +85 là giá trị cần tìm.

c Sai
Cách 1:_Trước tiên ta có 8 bit nhị phân biểu diễn số nguyên có dấuthì dải biểu diễn là [-128;127]

_Ta có:010101012=8510

Vì 85 ∈ [-128;127] nên giá trị cần tìm là +85

Cách 2:

_Với 8 bit ta thấy 0101 0101 đủ 8 bit [không có bit nào bị thừa]_Mặt khác bit đầu tiên là 0 biểu thị cho số dương nên ta chỉ cần đổi 0101 0101 về hệ thập phân là được kết quả.

_Ta có: 010101012=8510.


Vậy +85 là giá trị cần tìm.

d Sai
Cách 1:_Trước tiên ta có 8 bit nhị phân biểu diễn số nguyên có dấuthì dải biểu diễn là [-128;127]

_Ta có:010101012=8510

Vì 85 ∈ [-128;127] nên giá trị cần tìm là +85

Cách 2:

_Với 8 bit ta thấy 0101 0101 đủ 8 bit [không có bit nào bị thừa]_Mặt khác bit đầu tiên là 0 biểu thị cho số dương nên ta chỉ cần đổi 0101 0101 về hệ thập phân là được kết quả.

_Ta có: 010101012=8510.


Vậy +85 là giá trị cần tìm.

Câu 31: Số nguyên -86 được biểu diễn dưới dạng số nhị phân 8 bit là?
a. 0101 0101 b. 0011 0011c. 1010 1010 d. 1010 1001

a Sai
Cách 1:[Ta chuyển -86 về giá trị tương ứng khi biểu diễn không dấu]

_Trước tiên ta có 8 bit nhị phân biểu diễn 28 số nguyên


_Vì -86 < 0 nên ta cộng nó với 28 sẽ được giá trị của nó ứng với khi biểu diễn 8 bit không dấu
_Ta có: -86+28=17010=1010 10102_1010 1010 là giá trị cần tìm

Cách 2:

_Vì -86 là số âm nên ta cần dùng mã bù 2 để biểu diễn: +Trước tiên đổi 86 về hệ nhị phân:

8610=010101102[Vì là 8 bit nên ta phải lấy đúng 8 chữ số ở hệ nhị phân]

+Bù 1 [nghịch đảo các bit] : 10101001 [đổi 0 về 1, 1 về 0] +Bù 2 [cộng với 1] : 10101001+1=10101010

_Vậy -86 ở 8 bit là 10101010

b Sai
Cách 1:[Ta chuyển -86 về giá trị tương ứng khi biểu diễn không dấu]

_Trước tiên ta có 8 bit nhị phân biểu diễn 28 số nguyên


_Vì -86 < 0 nên ta cộng nó với 28 sẽ được giá trị của nó ứng với khi biểu diễn 8 bit không dấu
_Ta có: -86+28=17010=1010 10102_1010 1010 là giá trị cần tìm

Cách 2:

_Vì -86 là số âm nên ta cần dùng mã bù 2 để biểu diễn: +Trước tiên đổi 86 về hệ nhị phân:

8610=010101102[Vì là 8 bit nên ta phải lấy đúng 8 chữ số ở hệ nhị phân]

+Bù 1 [nghịch đảo các bit] : 10101001 [đổi 0 về 1, 1 về 0] +Bù 2 [cộng với 1] : 10101001+1=10101010

_Vậy -86 ở 8 bit là 10101010

c Đúng
Cách 1:[Ta chuyển -86 về giá trị tương ứng khi biểu diễn không dấu]

_Trước tiên ta có 8 bit nhị phân biểu diễn 28 số nguyên


_Vì -86 < 0 nên ta cộng nó với 28 sẽ được giá trị của nó ứng với khi biểu diễn 8 bit không dấu
_Ta có: -86+28=17010=1010 10102_1010 1010 là giá trị cần tìm

Cách 2:

_Vì -86 là số âm nên ta cần dùng mã bù 2 để biểu diễn: +Trước tiên đổi 86 về hệ nhị phân:

8610=010101102[Vì là 8 bit nên ta phải lấy đúng 8 chữ số ở hệ nhị phân]

+Bù 1 [nghịch đảo các bit] : 10101001 [đổi 0 về 1, 1 về 0] +Bù 2 [cộng với 1] : 10101001+1=10101010

_Vậy -86 ở 8 bit là 10101010

d Sai
Cách 1:[Ta chuyển -86 về giá trị tương ứng khi biểu diễn không dấu]

_Trước tiên ta có 8 bit nhị phân biểu diễn 28 số nguyên


_Vì -86 < 0 nên ta cộng nó với 28 sẽ được giá trị của nó ứng với khi biểu diễn 8 bit không dấu
_Ta có: -86+28=17010=1010 10102_1010 1010 là giá trị cần tìm

Cách 2:

_Vì -86 là số âm nên ta cần dùng mã bù 2 để biểu diễn: +Trước tiên đổi 86 về hệ nhị phân:

8610=010101102[Vì là 8 bit nên ta phải lấy đúng 8 chữ số ở hệ nhị phân]

+Bù 1 [nghịch đảo các bit] : 10101001 [đổi 0 về 1, 1 về 0] +Bù 2 [cộng với 1] : 10101001+1=10101010

_Vậy -86 ở 8 bit là 10101010

Câu 32: Cho các số nguyên không dấu: X=6A16, Y=1538, Z=10510. Thứ tự sắp xếp giảm dần sẽ là?
a. X, Y, Z b. Y, X, Zc. Z, Y X d. Y, Z, X

a Sai
X=6A16=6*161+A*160=10610
Y=1538=1*82+5*81+3*80=10710
Z=10510 Vậy Y>X>Z

Xem thêm lý thuyết tại đây:Chuyển đổi số

b Đúng
X=6A16=6*161+A*160=10610
Y=1538=1*82+5*81+3*80=10710
Z=10510 Vậy Y>X>Z

Xem thêm lý thuyết tại đây:Chuyển đổi số

c Sai
X=6A16=6*161+A*160=10610
Y=1538=1*82+5*81+3*80=10710
Z=10510 Vậy Y>X>Z

Xem thêm lý thuyết tại đây:Chuyển đổi số

d Sai
X=6A16=6*161+A*160=10610
Y=1538=1*82+5*81+3*80=10710
Z=10510 Vậy Y>X>Z

Xem thêm lý thuyết tại đây:Chuyển đổi số

Câu 33: Cho số nguyên 16 bit có dấu có mã hexa là: 5931, AC43, B571, E755. Số lớn nhất là?
a. 5931 b. B571c. AC43 d. E755

a Đúng _Vì đây là biểu diễn số nguyên có dấu 16 bit nhị phân tương ứng với mã hexa là từ 0000 tới FFFF [1 chữ số mã hexa tương ứng 4 bit] _Theo trục số của dải biểu diễn số nguyên có dấu thì nửa đầu là biểu diễn số dương và nửa sau là biểu diễn số âm. Các số tăng dần trên mỗi nửa. _Ở đâyNửa biểu diễn số dương là từ 0000 đến 7FFF Nửa biểu diễn số âm là từ 8000 đến FFFF Ta có: 5931 ∈ [0000;7FFF] nên nó là số dương {AC43;B571;E755} ∈ [8000;FFFF] nên chúng là số âm Vậy số lớn nhất là 5931 [Nếu muốn so sánh chi tiết thì ta tiếp tục. Sau khi chia ra được số âm và số dương rồi thì ta so sánh bình thường các số trên mỗi nửa. Vì "các số tăng dần trên mỗi nửa" nên ở nửa âm AC43

Chủ Đề