首页 > 解决方案 > Java:将 int 转换为字节时,二进制补码如何工作?

问题描述

我有一个关于将 int 转换为字节时二进制补码如何工作的问题。例如,当转换一个值在 127 和 256 之间的 int 时,我得到负值,我想了解如何。我知道高位被丢弃了,所以 256 到 512 之间的任何值都会导致字节变量保持 int 值减去 256;但我很好奇如何计算出二进制的负值。

例如,我很好奇以下代码是如何工作的:

int i = 140;    
byte b = (byte) i;    
System.out.println(b); // outputs -116

140 在二进制中是 10001100,在我收集的二进制补码中。在二进制中,10001100 如何成为输出 -116 所需的二进制补码?

标签: binarybytetwos-complement

解决方案


推荐阅读