Binary Ones Complement Operator (~) 不能正常工作(或者我不知道怎么用)

Binary Ones Complement Operator (~) Not working properly (or I don't know how to use it)

我有这行代码:

System.out.println("Flipped byte: " + ((~ Integer.parseInt(Integer.toString(byteRepresentation[8], 2), 2)) & 0xFF));

字节已签名这一事实妨碍了我的工作。 byteRepresentation 是字节数组(java 字节原语)。当 byteRepresentation[8] 为正数 (+) 时,它可以正常工作,但是当 byteRepresentation[8] 为负数 (-) 时,它只是删除负数(使结果为正数)并减去 1.

我正在寻找一种方法,例如让 -127 变成 0,-126 变成 1 等等。

行为是对的。 ~ 只是翻转所有位,然后它将被解释为 twos complement

您只想将 +127 添加到您的数字中,以获得所需的行为(-127 -> 0,-126 -> 1)

一个例子

~(1) -> ~(00000001) -> 11111110 -> -2

System.out.println(~1); // -2

~(-1) -| ~(11111111) -> 00000000 -> 0

System.out.println(~-1); // 0