【问题标题】:Java - How to Extract Certain Portions of Bits Using Bit Mask?Java - 如何使用位掩码提取位的某些部分?
【发布时间】:2017-09-23 19:17:10
【问题描述】:

这是我第一次看到按位运算和位掩码。我已经看到了一些使用 C 和 C++ 的示例,但我正在寻找使用 Java 的说明。

我有以下 32 位字符串

0000 0000 1010 0110 0011 1000 0010 0000

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

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

【问题讨论】:

  • 将数字右移 21 位; &0x1F
  • Java 有一个按位移位运算符 >> 所以只需将您的 rbit 移到最低位(即右移 21 位。

标签: java bit bitmask


【解决方案1】:

如果你真的有一个String,把两个子字符串(00101)连接起来,然后使用Integer.parseInt和一个二的基数:

int bits = Integer.parseInt(str.substring(7, 9) + str.substring(10, 13), 2);

如果您有int,请使用逻辑右移,然后使用带有位掩码的&0b 表示二进制表示法)。

int bits = (n >>> 21) & 0b11111;

【讨论】:

    猜你喜欢
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多