在java中使用二进制数

时间:2011-11-01 18:28:16

标签: java

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

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

我想我的情况是要使用@Jarrod Roberson提到的BitSet

6 个答案:

答案 0 :(得分:44)

在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

答案 1 :(得分:12)

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

  

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

     

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

     

每个位集都有一个当前大小,即空间位数   目前由位集使用。请注意,大小与   实现一个位集,因此它可能会随着实现而改变。该   位集的长度与位集的逻辑长度有关,并且是   独立于实施而定义。

     

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

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

请参阅此链接:http://docs.oracle.com/javase/7/docs/technotes/guides/language/binary-literals.html

答案 4 :(得分:0)

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

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

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

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

答案 5 :(得分:0)

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

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