java - 如何计算-5的负(~)

标签 java scjp

public class UnaryOperator {
    public static void main(String[] args) {
        byte a= -5;
        System.out.println(~a); // prints 4
    }
}

当我手动执行此操作时,我得到的答案为 6。

这是我的做法:

128 64 32 16 8 4 2 1
 0  0  0  0  0 1 0 1

由于它是一个否定,我将其反转为以下内容:

         128 64 32 16 8 4 2 1
          0  0  0  0  0 1 0 1
    sign -1  1  1  1  1 0 1 0

-----------------------------
             0  0  0  0 1 0 1
add one-->   0  0  0  0 0 1 1  

------------------------------
             0  0  0  0 1 1 0 = 6   
------------------------------

我知道我所做的事情有问题,但我无法弄清楚。

最佳答案

5 是 00000101
-5 是 11111010+00000001 = 11111011
~(-5) 是 00000100
所以你得到 4。

关于java - 如何计算-5的负(~),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29982223/

相关文章:

java - x = x++ 不会递增,因为++ 是在赋值后应用的?

java - 在 Android 中向 map 添加标记

java - 在 Java 中优雅地避免 NullPointerException

java - 自动装箱/拆箱 java Long 类型作为返回值时出现意外的 NullPointerException

java - 调用构造函数后从 main 调用私有(private)包方法

java - Java 中是否有相当于 BasicFileAttributes 的外部库?具体是fileKey方法吗?

java - 如何使用java获取xml节点的属性值

java - 如何使用 CallLog 在 Android 上获取我的电话号码

java - 方法内部不允许接口(interface)