【发布时间】:2021-06-15 10:07:34
【问题描述】:
byte b = 0b1111_1111;
byte c = 0b111_1111;
byte d = 0b0111_1111;
第一行导致编译错误:不兼容的类型。我也试过0xFF和十进制,一样。谢谢。
我认为byte 的意思是不能大于 8 位的值。 0b1111_1111 为 8 位。
【问题讨论】:
-
因为
0b1111_1111是不适合byte的数字255。请注意,byte是一个有符号的 8 位数字,范围从 -128 到 +127。 -
您应该发布错误消息。另外你的描述是错误的。错误已经在第 1 行(变量 b)。您也可以在线测试:tutorialspoint.com/compile_java_online.php
-
我认为字节的意思不能大于 8 位。 0b1111_1111 是 8 位。
-
@Tiina 是的,一个字节是 8 位。但是您使用的语法不允许您单独定义每个位。 Java 中的语法
0b1111_1111;仅表示以二进制形式写入的数字。最后byte b = 0b1111_1111;与byte b = 255;完全一样,只是你将数字声明为二进制。 -
Tiina 我认为误解是关于 0b
。您将其视为您将值分配给(字节)的类型。但是编译器会看到文字并将其解释为 int。此后,它查看作业。您所要做的就是告诉编译器您的文字是一个字节: (byte) 0b1111_1111。或将 -1 写为二进制 int:0b1111_1111_1111_1111_1111_1111_1111_1111
标签: java