像这样的数字在 Java 中是啥意思:0b1000_1100_1010? (数字之间的“b”)[重复]

Posted

技术标签:

【中文标题】像这样的数字在 Java 中是啥意思:0b1000_1100_1010? (数字之间的“b”)[重复]【英文标题】:What does a number like this mean in Java: 0b1000_1100_1010? (The "b" between the numbers) [duplicate]像这样的数字在 Java 中是什么意思:0b1000_1100_1010? (数字之间的“b”)[重复] 【发布时间】:2020-05-19 19:01:40 【问题描述】:

我正在练习 Java 课程的一些任务,我遇到了这个变量

int x = 0b1000_1100_1010;

我知道数字旁边的“f”和“d”分别表示该数字是 floatdouble。但是这个介于数字之间的“b”呢?

我看到here这和bytes有关,但我不太明白它是如何工作的。

我的问题也适用于我刚刚在该链接上看到的数字之间的“x”。

谢谢!

【问题讨论】:

【参考方案1】:

这是binary literal。

这是一种表示数字以二进制表示的符号。

就像使用十六进制表示法:0xF9。在Java中,可以用0b1111_1001来表示同一个数,十进制是249。

字节无关,与位有关。您可以清楚地看到哪些位已设置,哪些未设置。默认情况下,以0b 开头的数字是int,但您可以像0b1010L 这样写一个长的数字(注意尾随的L)。

b 可以是小写或大写。所以这也是有效的:0B1111。请注意,由于0b 前缀表示二进制表示,因此您不能使用除01(和_ 来标记分隔符)以外的任何字符。

【讨论】:

来源:JLS 3.10.1:“二进制数字由前导 ASCII 字符 0b 或 0B 后跟一个或多个 ASCII 数字 0 或 1 和下划线组成”。它是 Java 7 中的新功能。【参考方案2】:

Java 允许您在int 值中使用_,如下所示:

public class Main 
    public static void main(String[] args) 
        int x = 1_2_3;
        System.out.println(x + 100);
    

输出:

223

【讨论】:

"但是数字之间的这个“b”呢?"这如何回答这个问题? @AndyTurner - 我完全错过了b。我是在你评论后才看到的。【参考方案3】:

字节数据类型是一个 8 位有符号二进制补码整数。最小值为-128,最大值为127(含)。

字节数据类型可用于在大型数组中节省内存, 内存节省实际上很重要。它们也可以用于 int 的位置,它们的限制有助于澄清您的代码;事实 变量的范围是有限的可以作为一种形式 文档。

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

【讨论】:

以上是关于像这样的数字在 Java 中是啥意思:0b1000_1100_1010? (数字之间的“b”)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

“= 0”在 C++ 中是啥意思? [复制]

java正则表达式中是啥意思

星号 * 在 Python 中是啥意思? [复制]

这个语句在c++中是啥意思?

M1 在 Maven 存储库中是啥意思?

$$ 在 shell 中是啥意思?