我想知道哪一个是在java中使用二进制数的最佳方法。 我需要一种方法来创建二进制数组并使用它们进行一些计算。 例如,我想X-或二进制数的值或乘法矩阵。
问题解决了: 非常感谢所有信息。
我想我的情况是要使用@Jarrod Roberson提到的BitSet
答案 0 :(得分:44)
在Java版本7中,您可以通过声明整数并使用0b
或0B
来标记数字来使用二进制数字:
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
类型的数组或任何你想要的),因为最终所有内容都以二进制形式存储。