为什么字节 b = (字节) 0xFF 等于整数 -1?

2022-09-01 22:45:05

为什么等于 ?byte b = (byte) 0xFFinteger-1

前任:

int value = byte b = (byte) 0xFF;
System.out.println(value);

它会打印吗?-1


答案 1

字节在 Java 中签名。在二进制0x00是0,0x01是1,依此类推,但所有1(即0xFF)都是-1,0xFE是-2,依此类推。请参阅 Two 的补码,这是使用的二进制编码机制。


答案 2
  1. b在确定要调用的 重载 时提升为 。intsystem.out.println

  2. Java 中的所有字节都经过签名。

  3. 有符号字节表示值 。这是因为 Java 使用 two 的补码来表示有符号值。有符号字节表示,因为它的最高有效位是(因此它表示负值),并且其值为 。0xff-10xff-11-128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = -1


推荐