【发布时间】:2022-01-23 05:06:00
【问题描述】:
我使用此网站进行转换: https://www.binaryhexconverter.com/binary-to-decimal-converter
9223372036854775807 表示为 01111111111111111111111111111111111111111111111111111111111111
而一个字节占用1个字节,也就是8位,所以最后8位是:11111111 使用上面链接的网站将其转换回一个数字,我得到 255,而不是 -1。
请看我的代码。
非常感谢您帮助我。
long l = 9223372036854775807L;
System.out.println("Value of B: " + l);
byte b = (byte) (l);
System.out.println("Value of B: " + b);
这有以下结果:
Value of B: 9223372036854775807
Value of B: -1
【问题讨论】:
-
您是否查看过
byte在Java 中可以保存的值范围?见docs.oracle.com/javase/specs/jls/se10/html/jls-4.html#jls-4.2.1 -
我不知道那个网站,但在 Java 中,二进制
11111111的字节是-1(8 位有符号的两个补码整数) - 不仅在 Java 中:Wikipedia
标签: java