如何使用按位运算在整数中查找半字节?
我需要具体提取给定的半字节。
该方法看起来像这样
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*x
至x << 2
对于您来说,因此这两种选择通常会为您提供相同的性能(而第一个当然更具可读性)。
关于java - 查找整数中的特定半字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32303206/