【问题标题】:Output of the below program: Signed Byte Operation以下程序的输出:有符号字节操作
【发布时间】:2015-02-25 11:00:44
【问题描述】:

有人可以告诉我以下程序的输出以及签名字节的工作原理

public class OppositeSigns 
{
    public static void main(String[] args) 
    {
      // TODO Auto-generated method stub

      byte a =-2;
      byte b= -1;
      opp(a,b);
    }

    static void opp(byte x,byte y)
    {
      byte z;
      z= (byte)(x^y);
      System.out.println(z);
    }
}

【问题讨论】:

  • 你为什么不试试呢?

标签: java byte signed


【解决方案1】:
-1 is 11111111 in binary
-2 is 11111110 in binary

当你对这两个数字进行异或运算时,你会得到

      00000001

这是 1

【讨论】:

  • 除非您没有对这两个字节进行异或运算。您正在对 32 位整数进行异或运算。答案最终是一样的,但值得知道的是整数提升首先发生。
  • 非常感谢@eran。但是有符号字节如何表示是 -1= 10000001?
  • @RahulLamba 了解Two's complement
猜你喜欢
  • 2011-09-26
  • 1970-01-01
  • 2021-03-30
  • 2022-06-21
  • 1970-01-01
  • 2014-01-16
  • 2021-12-12
  • 1970-01-01
相关资源
最近更新 更多