首页 > 解决方案 > C++:如何获取位集的 MSB(最高有效位)(使用按位运算符)?

问题描述

我正在尝试将十进制数转换为长度的位集27,然后使用位运算符从该位集中检索 MSB(最左边的位)。例如,数字67108865表示为100000000000000000000000001,MSB 为1。另一个例子是1表示为的数字,000000000000000000000000001MSB 是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;

但是,我收到以下错误:

错误:'operator&' 不匹配(操作数类型为 'std::bitset<27>' 和 'int') int most_significant_bit = bs >> (sizeof(value)*8 - 1) & 1;

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

标签: c++bitset

解决方案


只需使用operator[]来获取最重要的位。

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

推荐阅读