按位运算符的负操作数如何在Java中工作?

div*_*ine 7 java bitwise-operators

-4 & -5 = -8 // How?
-4 & 5 = 4 // How?
Run Code Online (Sandbox Code Playgroud)

我需要解释如何达到上述结果.我用正整数求解没有困难.

Era*_*ran 10

只需将整数转换为二进制表示(对于负整数,使用二进制补码)并按位运行AND:

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

-8 11111..1000


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

 4 00000..0100
Run Code Online (Sandbox Code Playgroud)