java中int的否定输出的混淆

Dhr*_*den 0 java

a=255=>1111 1111在否定之后有一个int ,即~a=10000 0000=>-64
不是它0000 0000=>0
基本上想要~255 to 0用8位二进制格式,即
1111 1111 to 0000 0000没有使它为负.

PaF*_*PaF 5

问题是a可能是int类型,在Java中占用4个字节.所以你得到的是:

1111 1111 1111 1111 1111 1111 0000 0000
Run Code Online (Sandbox Code Playgroud)

如果您知道自己总是使用8位工作,那么您应该屏蔽结果:

int b = ~a ^ 0xFF;
Run Code Online (Sandbox Code Playgroud)