java - 我不明白 Java 中二进制数的行为

标签 java binary

我有以下代码:

System.out.println(0b11111111);
System.out.println((byte) 0b11111111);

第一行打印

255

第二行打印

-1

请问有人可以解释一下为什么结果不同吗? (byte)怎么样铸件变更0b11111110变成-1的数字?

谢谢!

最佳答案

byte 类型的范围是 -128 到 127。由于 255 不是有效的字节值,因此二进制数 11111111 在转换为 byte 时为 -1。

如果您不将 0b11111111 转换为 byte,它仍然(默认)为 int,并且 255 是有效的 >int 值。

关于java - 我不明白 Java 中二进制数的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41344771/

相关文章:

java - 在 Java 中停止线程?

iphone - 创建应用程序的免费版本,但将应用程序单独放在调试设备上

c# - 了解 C# 中的十六进制和字节

java - 使用 Class<?> 变量实例化参数化类型类

java - 如何创建闪光灯和频闪效果。需要帮助来修复频闪效应

java - 使用 Lucene 和 Java 标记化、删除停用词

java - Android AudioRecord 的问题

c++ - 如何迭代 long long 的二进制掩码?

syntax - 在verilog中将连线值转换为整数

ubuntu - execve ENOMEM(无法分配内存)执行某些 x64 二进制文件时出错