在java中使用二进制数

我想知道哪一个是在java中使用二进制数的最佳方法。 我需要一种方法来创建二进制数组并使用它们进行一些计算。 例如,我想X或二进制数的值或乘法矩阵。

问题解决了:非常感谢所有信息。

我认为对于我的情况,我将使用@Jarrod Roberson提到的BitSet

在Java版本7中,您可以通过声明整数并在数字前面加上0b0B来简单地使用二进制数字:

 int x=0b101; int y=0b110; int z=x+y; System.out.println(x + "+" + y + "=" + z); //5+6=11 /* * If you want to output in binary format, use Integer.toBinaryString() */ System.out.println(Integer.toBinaryString(x) + "+" + Integer.toBinaryString(y) + "=" + Integer.toBinaryString(z)); //101+110=1011 

您可能正在寻找的是BitSet类。

该类实现了一个根据需要增长的位向量。 位组的每个组件都有一个布尔值。 BitSet的位由非负整数索引。 可以检查,设置或清除各个索引位。 一个BitSet可用于通过逻辑AND,逻辑包含OR和逻辑异或运算来修改另一个BitSet的内容。

默认情况下,集合中的所有位最初都具有值false。

每个位集都有一个当前大小,即当前位集使用的空间位数。 请注意,大小与位集的实现有关,因此它可能随实现而改变。 位集的长度与位集的逻辑长度有关,并且与实现无关地定义。

除非另有说明,否则将null参数传递给BitSet中的任何方法都将导致NullPointerException。

数字本身与它在语言中的表示之间存在差异。 例如,“0xD”(基数16),“13”(基数10),“015”(基数8)和“b1101”(基数2)是指代相同数字的四种不同表示。

也就是说,您可以使用Java语言中的“int”原始数据类型来表示任何二进制数(以及任何基数中的任何数字),但只有在Java 7中,您才能像以前一样使用二进制文字如果我正确理解你的问题,能够使用八进制(0)和六进制(0x)文字来表示这些数字。

在Java 7中,二进制支持更好。

请看以下链接: http : //docs.oracle.com/javase/7/docs/technotes/guides/language/binary-literals.html

您可以将它们存储为byte数组,然后单独访问这些位。 然后对它们进行异或,你只能对字节进行异或(它是按位运算)。

当然它不必是一个字节数组(可以是一个int类型的数组或任何你想要的),因为最终所有东西都以二进制forms存储。

我从未见过使用二进制数字的计算机。

Java中的XOR运算符是^ 。 例如,5 ^ 3 = 6.大多数数字到字符串转换的默认基数是10,但有几种方法允许您指定另一个基数,如2:

 System.out.println(Integer.toString(5 ^ 3, 2)); 

如果您使用的是Java 7,则可以在源代码中使用二进制文字(除了以前支持的十进制,hex和八进制forms)。