2012-02-07 20 views
9

Tôi đang sử dụng 2' bổ sung để đại diện cho một số âm dưới dạng nhị phânđại diện cho số âm với 2 'kỹ thuật bổ sung?

Trường hợp 1: số -5

Theo 2' kỹ thuật bổ sung:

Chuyển đổi từ 5 đến dưới dạng nhị phân :

00000101, sau đó lật bit

11111010, sau đó thêm 1

00000001 

=> Kết quả: 11111011

Để đảm bảo điều này là đúng, tôi tính lại để thập phân:

-128 + 64 + 32 + 16 + 8 + 2 + 1 = -5 

Trường hợp 2: Số -240

Các các bước tương tự được thực hiện:

11110000 

00001111 

00000001 

00010000 => recalculate this I got 16, not -240 

Tôi hiểu nhầm điều gì đó?

Trả lời

11

Vấn đề là bạn đang cố gắng đại diện cho 240 chỉ với 8 bit. Phạm vi của một số ký 8 bit là -128 đến 127.

Nếu bạn thay vì đại diện cho nó với 9 bit, bạn sẽ thấy bạn nhận được câu trả lời đúng:

011110000 (240) 

100001111 (flip the signs) 
+ 
000000001 (1) 

= 

100010000 

= 

-256 + 16 = -240 
3

Số âm thấp nhất bạn có thể thể hiện bằng 8 bit là -128, là 10000000.

Sử dụng 2 của bổ sung:

 
128 = 10000000 
(flip) = 01111111 
(add 1) = 10000000 

Các số âm thấp nhất bạn có thể bày tỏ với N bit (với số nguyên ký dĩ nhiên) luôn luôn là - 2^(N - 1).

4

Bạn có quên rằng -240 không thể được biểu diễn bằng 8 bit khi được ký?