java - 在 Java 中将整数转换为字节

标签 java binary bit-manipulation

我有以下代码:

    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,因此您的号码在任何情况下都会被视为 Integer。

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

关于java - 在 Java 中将整数转换为字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33249757/

相关文章:

java - Java 中何时添加了实例初始化 block ?

C : Write char array (containing '1' and '0' ) into as binary in a file

C - 将缓冲区写入二进制文件 (wav)

将数字字符串转换为以二进制表示的字节数组

c++ - 游戏 map 对象属性的位域与多态性

java - Java 中的编译器在尝试解析字符串值 2.2250738585072012e-308 到 double 时意外挂断

java.lang.OutOfMemoryError : Java heap space with 300MB java. exe 上限

java - 将不可序列化的对象存储为 HttpSession 属性好吗?

json - 在 Erlang 中处理 badarg

python - 在 Python 中,如何解析 3 个字节的第 11 位和第 12 位?