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
我有这行代码:
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