gpt4 book ai didi

java - 二元补码运算符 (~) 无法正常工作(或者我不知道如何使用它)

转载 作者:行者123 更新时间:2023-12-01 11:12:24 26 4
gpt4 key购买 nike

我有这行代码:

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

关于java - 二元补码运算符 (~) 无法正常工作(或者我不知道如何使用它),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32199605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com