我有一个函数从一个数字中提取一个位:
int getBit (int value, int position) {
return value & (1 << position));
}但是如何对一个范围(包括有符号数字和无符号数字)这样做呢?例如:
从0x12345678 (签名0) = 0x15获得10:14位
int getField (int value, int hi, int lo, bool isSigned)发布于 2015-02-09 00:45:27
我怀疑你可能想用另一种方式来处理整个问题。与其提取比特,为什么不直接使用比特掩码。
例如,要检查是否启用了字节中最重要的位:
if(byte & 0xf0) {}要检查最不重要的位数,应该是:
if(byte & 0x01) {}要检查多个比特(或一个“范围”),例如低阶咬取:
if(byte & 0x0f) {}从你所说的来看,我怀疑这更接近你想要的东西,而且比转移到提取比特要简单得多。
https://stackoverflow.com/questions/28400816
复制相似问题