java - 查找整数中的特定半字节

标签 java bit-manipulation bitwise-operators

如何使用按位运算在整数中查找半字节?

我需要具体提取给定的半字节。

该方法看起来像这样

private int nibbleExtract(int x, int whichNibbleToGet)

以及此方法将返回什么的示例

nibbleExtract(0xFF254545, 7);//=> 0xF

最佳答案

您可以通过将数字移动半字节索引的 4 倍,并使用 0xF 进行掩码来实现此目的。 :

int nibbleIndex = 7;
int data = 0xFF254545;
int nibble = (data >> 4*nibbleIndex) & 0xF;

How would you do this without multiplication?

像这样:

int nibble = (data >> (nibbleIndex << 2)) & 0xF;

现代优化器将转换4*xx << 2对于您来说,因此这两种选择通常会为您提供相同的性能(而第一个当然更具可读性)。

关于java - 查找整数中的特定半字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32303206/

相关文章:

java - 如何处理ListView中的滚动? ListView 自动加载

java - Mac OSX 10.6.7 上进程 'java' 的大量线程和内存使用

java - "ClassA object = new ClassA();"和 "new ClassA();"之间的区别?

c# - 如何在 Java 中使用 C# 数据集?

c++ - 两次递归调用的递归算法的时间复杂度

Java 表达式等价

c++ - 整数位表示的哪一部分是标准的一部分?

c - 使用按位的奇偶程序

C++: union 与按位运算符

c - "producing negative zeroes"在不支持的系统中是什么意思?