我们划分了一个int来保存三个值.例如,前8位(从左到右)保持一个值,第8到第12位保持另一个值,其余位保持第三个值.
我正在编写一个实用程序方法来从int的某个位范围获取值.它够好吗?你有更好的解决方案吗?startBitPos和endBitPos从右到左计数.
public static int bitsValue(int intNum, int startBitPos, int endBitPos)
{
//parameters checking ignored for now
int tempValue = intNum << endBitPos;
return tempValue >> (startBitPos + endBitPos);
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我相信所有价值观都是不合情理的.
不,目前这不太正确:
我怀疑你想要:
// Clear unnecessary high bits
int tempValue = intNum << (31 - endBitPos);
// Shift back to the lowest bits
return tempValue >>> (31 - endBitPos + startBitPos);
Run Code Online (Sandbox Code Playgroud)
就个人而言,我觉得戴上面罩和换挡感觉比双重换挡更舒适,但我发现很难想出一些像上面那样简短的东西.
| 归档时间: |
|
| 查看次数: |
4351 次 |
| 最近记录: |