Java - 如何使用位掩码提取某些位的位?

时间:2017-09-23 19:17:10

标签: java bit bitmask

这是我第一次查看按位运算和位掩码。我已经看过一些使用C和C ++的例子,但我正在寻找使用Java的澄清。

我有以下32位字符串

<00> 0000 00 00 101 0 0110 0011 1000 0010 0000

但是我想以粗体(00101)提取第21到25位并忽略其他所有内容。最后,我希望我的输出结果是整数5(二进制0101)

使用位掩码,我可以使用什么方法将该位部分作为输出结果?

1 个答案:

答案 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;