到目前为止,我将二进制数存储为字符串:
String value = "111111110000000010101010";
我希望使用移位运算符,使其等于000000000000000011111111
。
我知道我需要将它移动16个点,但是如何转换字符串值以便我可以在其上使用移位运算符?
答案 0 :(得分:2)
您可以使用Integer.parseInt(String, int)将表示二进制数据的String转换为int:
int value = Integer.parseInt("111111110000000010101010", 2);
然后您可以使用bit shift operators:
进行转换签名的左移运营商"<<&#;将位模式向左移动,并使用带符号的右移运算符">>"将位模式向右移动。位模式由左侧操作数给出,位置数由右侧操作数移位。无符号右移运算符">>>"将零移动到最左边的位置,而在">>"之后的最左边的位置取决于符号扩展。
答案 1 :(得分:1)
另一种方法是使用Java 7's binary literal notation,以避免问题......
int value = 0b111111110000000010101010;
int shifted = value >> 16;
System.out.println(Integer.toBinaryString(shifted));
=> 11111111