我需要检查C/C++中整数的最低有效位(LSB)和最高有效位(MSB)的值。我该怎么做?

最佳答案

//int value;
int LSB = value & 1;

或者(理论上不是可移植的,但实际上是-参见史蒂夫的评论)
//int value;
int LSB = value % 2;

详细信息:
第二个公式更简单。 %运算符是余数运算符。一个数字的LSB为1(如果它是一个奇数),否则为0。因此,我们检查除以2的余数。第一个公式的逻辑是:二进制数字1是:
0000...0001

如果您将此二进制数与任意数字进行“与”运算,则除最后一个数字外,结果的所有位都将为0,因为0 AND其他为0。如果您的数字的最后一位为1,则结果的最后一位将为1。因为1 & 1 == 11 & 0 == 0
This是按位操作的很好的教程。

HTH。

关于c++ - 检查C/C++中的最低有效位(LSB)和最高有效位(MSB)的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6647783/

10-11 10:25