这是我第一次查看按位运算和位掩码。我已经看过一些使用C和C ++的例子,但我正在寻找使用Java的澄清。
我有以下32位字符串
<00> 0000 00 00 101 0 0110 0011 1000 0010 0000但是我想以粗体(00101)提取第21到25位并忽略其他所有内容。最后,我希望我的输出结果是整数5(二进制0101)
使用位掩码,我可以使用什么方法将该位部分作为输出结果?
答案 0 :(得分:0)
如果你真的有String
,请选择两个子字符串( 00
和 101
),将它们连接起来,然后使用基数为2的Integer.parseInt
:
int bits = Integer.parseInt(str.substring(7, 9) + str.substring(10, 13), 2);
如果您有int
,请使用逻辑右移,然后使用带有位掩码的&
(0b
表示二进制表示法。)
int bits = (n >>> 21) & 0b11111;