gpt4 book ai didi

java - 转换 0xFF 给我 -1 -> 有符号还是无符号?

转载 作者:行者123 更新时间:2023-11-30 06:19:58 26 4
gpt4 key购买 nike

这是我的代码:

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

我希望看到 255,但我看到的却是 -1。发生了什么?编译器使用的是有符号字节而不是无符号字节吗?

最佳答案

也许您对存储和表示之间的区别感到困惑。

正如其他人告诉您的那样,Java 仅使用带符号的整数类型。由于一个字节只有 8 位,这意味着您的范围是从 -128 到 127。但请记住:这只是十进制表示,不会告诉您二进制存储!

Java 字节类型范围的更好提醒是以下(十进制)表示:

0 1 ... 126 127 -128 -127 ... -2 -1

这直接对应于以下二进制表示:

00000000 00000001 ... 11111110 11111111

带符号的十进制表示形式称为 two's complement .如您所见,二进制值 11111111 正好是 0xFF,对应于(有符号的)十进制值 -1。

如果您现在通过流发送此值,您将获得完整的 0xFF 值,无论您在 Java 程序的控制台输出中看到什么。

关于java - 转换 0xFF 给我 -1 -> 有符号还是无符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22452609/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com