2016-12-27 22 views
5
-4 & -5 = -8 // How? 
-4 & 5 = 4 // How? 

Tôi cần giải thích về cách có thể đạt được kết quả ở trên. Tôi không có khó khăn trong việc giải quyết với các số nguyên dương.Toán hạng phủ định đối với toán tử bitwise hoạt động như thế nào trong Java?

+0

Có thể trùng lặp của [Làm thế nào để kết quả toán tử bitwise xảy ra?] (Http://stackoverflow.com/questions/20169287/how-do-bitwise-operator-results-occur) – vaxquis

Trả lời

9

Chỉ cần chuyển đổi số nguyên để biểu diễn nhị phân của họ (đối với số nguyên âm, sử dụng two's complement) và chạy các bit-wise VÀ:

-4 11111..1100 & 
-5 11111..1011 

-8 11111..1000 


-4 11111..1100 & 
5 00000..0101 

4 00000..0100 
+0

tôi cũng đã thử với phần bổ sung 2 cho -ve số nguyên nhưng tôi không hiểu tại sao tôi không nhận được câu trả lời đúng cho đến khi tôi thấy của bạn: ( – divine

+1

@divine Cách để tìm 2 bổ sung của một tích cực 'int' i là để tính toán 2^32-i. 2^32 là 10000..000 (1 tiếp theo là 32 0s), nếu bạn trừ nó 4 (100), bạn nhận được 1111 ... 11100 (30 1s theo sau bởi 2 0s), là biểu diễn nhị phân của -4. – Eran

+1

Khác 1) Không và sau đó tăng: 2) Ghi lại, từ LSb, tất cả các số không cho đến khi số đầu tiên được bao gồm, sau đó viết phần còn lại của các bit bổ sung. –

3

Hãy xem cách số đang đại diện:

positive four 0100   
negative four 1100 
positive five 0101   
negative five 1011 
negative eight 1000 

Nếu bạn cố gắng làm hướng dẫn hoạt động and, bạn nhận được kết quả như sau:

1100 (-4) & 1011 (-5) = 1000 (-8) 
1100 (-4) & 0101 (5) = 0100 (4) 

Here bạn có thể đọc thêm về điều này.

Các vấn đề liên quan