如何使用按位运算在整数中找到一个小块?
我需要提取一个特定的咬口,特别是。
该方法如下所示
private int nibbleExtract(int x, int whichNibbleToGet)以及该方法将返回什么的示例。
nibbleExtract(0xFF254545, 7); // => 0xF
发布于 2015-08-31 02:28:30
您可以通过将数字移动4倍于nibble,并使用0xF掩蔽来实现。
int nibbleIndex = 7;
int data = 0xFF254545;
int nibble = (data >> 4*nibbleIndex) & 0xF;没有乘法怎么做?
如下所示:
int nibble = (data >> (nibbleIndex << 2)) & 0xF;现代优化器将为您将4*x转换为x << 2,因此这两种选择通常会给您提供相同的性能(当然,第一种更易读)。
https://stackoverflow.com/questions/32303206
复制相似问题