Java Program to Illustrate Use of Binary Literals

2025年5月10日 | 阅读 4 分钟

Java 7 增强了对数字表示的支持,引入了二进制字面量。用二进制(0 和 1)表示的数字称为二进制字面量。在 Java 中,二进制字面量可用于 byte、short、int 和 long 等整型。可以通过在数字前加上 0b 或 0B 来指定二进制字面量。这使得我们可以在代码中直接定义二进制数。在程序运行时,Java 会将这些二进制字面量转换为它们对应的十进制值。通过使用 0b 或 0B 前缀,我们可以使用二进制字面量直接以基数为 2(二进制数系统)的形式表示一个整数值。

在 Java 7 之前,用户必须使用十六进制(基数 16)、八进制(基数 8)或十进制(基数 10)来表示数字。当引入二进制字面量后,处理位运算、标志设置和基于二进制的 数据结构 等低级编程任务变得更加简单,因为它们为程序员提供了一种直接处理二进制值的方法。

二进制字面量的实现

示例 1

Java 编译器在编译时会将基数为 2 的数字转换为十进制值,程序使用二进制字面量(0b / 0B)来表示这些数字。为了确保它适合分配的位数,每个二进制值都存储在相应的原始数据类型(byte、short、int、short)中。编译器在将这些字面量从二进制转换为十进制时,将每个数字解释为 2 的幂。为了确保类型安全,内存分配由 数据类型 决定。通过将值限制为 0 和 1,该软件还保留了正确的二进制语法并演示了自动类型推断。最后,为了确保准确的解释,值以十进制格式打印。

实施

输出

 
The Binary Literal in Byte is given by:
a1 value = 5, a2 value = 3
The Binary Literal in Short is given by:
b1 value = 3, b2 value = 7
The Binary Literal in Integer is given by:
c1 value = 5, c2 value = 7
The Binary Literal in Long is given by:
d1 value = 64536, d2 value = 1087   

示例 2

Java 编译器通过在编译时将二进制字面量(0b110、0b1010 等)转换为十进制数,确保了基于 byte 数据类型范围(-128 到 127)的准确解释。在处理负值(如 -0b111)时,会使用二补码表示法,其中符号由最高有效位确定。通过利用自动类型提升,算术运算(+、*)保证了无溢出的准确计算。如果相同数字的二进制和十进制表示在内存中是等效的,可以使用相等性检查(n1 == n2)进行验证。该程序通过高效地执行这些操作,利用低级二进制算术,对于位运算和需要高性能的应用非常有用。

实施

输出

 
n1 value = 6
n2 value = 6
n3 value = -7
n4 value = 10
Is n1 and n2 are equal or not: true
n2 + 1 = 7
n3 + 1 = -6
n4 x 2 = 20