【问题标题】:Why is the output of this program -4? (Java - Datatypes Byte) [duplicate]为什么这个程序的输出是-4? (Java - 数据类型字节)[重复]
【发布时间】:2017-04-09 13:27:24
【问题描述】:

我对以下代码有疑问:

public class test {
public static void main(String args[]) {
    byte x = 3;
        x = (byte)~x;
        System.out.println(x);

    }

}

输出为:-4

【问题讨论】:

  • 你明白什么是二元否定吗?你期望输出是什么?
  • 3 在二进制世界中是 011。它的否定是 100,在基数 10 中等于 4,在 Java 中,它不是(~)32 位长的 011。
  • @Vinay,一个字节中011的否定是11111100,而不是100。
  • 这就是为什么我补充说它将是一个 32 位否定

标签: java types


【解决方案1】:

numver 的二进制否定与number+1 的否定相同。原因如下:

二进制 3 是 0011(跳过前导位以使其更具可读性)。

二进制否定~31100

现在,二进制 4 是 0100

要确定-4,首先写二元否定1011

然后加一个(见wiki1100

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多