我试图将十进制数转换为长度为27的位集,然后使用按位运算符从该位集中检索MSB(最左边的位)。例如,数字67108865表示为100000000000000000000000001,而MSB是1。另一个示例是数字1,它表示为000000000000000000000000001,而MSB是0

以下是我的C++代码:

unsigned int value = 67108865;
bitset<27> bs(value);
int most_significant_bit = bs >> (sizeof(value)*8 - 1) & 1;
cout << most_significant_bit << endl;

但是,我收到以下错误:



如何使用按位运算符检索MSB?

最佳答案

只需使用operator[]获得最高有效位。

bitset<27> bs(value);
int ms_bit = bs[bs.size()-1];

关于c++ - C++:如何获取位集的MSB(最高有效位)(使用按位运算符)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61217105/

10-11 19:13