【问题标题】:Converting Integer to Byte in Java [duplicate]在Java中将整数转换为字节[重复]
【发布时间】:2015-10-21 02:04:50
【问题描述】:

我有以下代码:

    int i =128;
    byte b = (byte) i;
    System.out.println( Integer.toBinaryString(i)); //10000000
    System.out.println( Integer.toBinaryString(b)); //11111111111111111111111110000000

有人能解释一下为什么在从整数转换为字节时左边加了 1,一个字节怎么能携带超过 8 位!?

【问题讨论】:

  • Integer#toBinaryString 接受int,而不是bytebyte 值被扩大到 int

标签: java binary bit-manipulation


【解决方案1】:

您在 Integer 类上调用 .toBinaryString,因此您的号码在任何情况下都被视为 Integer。

第二次调用有这么多 1 的原因是因为它是一个负数。在 Java 中,字节是有符号的,因此最大正值为 127。通过将 128 转换为字节,您实际上表示 -128。当您将那个小的负数转换为 32 位有符号整数时,所有这些 1 都会出现在开头。

【讨论】:

  • 谢谢你指出问题,但实际上没有 Byte.toBinaryString(i) :|
猜你喜欢
  • 2019-09-21
  • 1970-01-01
  • 2015-04-28
  • 1970-01-01
  • 2010-12-28
  • 2015-03-12
  • 2011-07-01
  • 1970-01-01
相关资源
最近更新 更多