繁体   English   中英

C++:如何获取 Bitset 的 MSB(最高有效位)(使用按位运算符)?

[英]C++: How to get the MSB (Most-Significant Bit) of a Bitset (using bitwise operators)?

我正在尝试将十进制数转换为长度为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;

但是,我收到以下错误:

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

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

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

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

这会让你得到最重要的一点:

auto msb = bs[bs.size()-1];

要使用按位运算符执行此操作,您需要首先使用 to_ulong() 将 bitset 转换为unsigned long或使用to_ullong()to_ulong()unsigned long long转换为:

auto msb = bs.to_ulong() >> (bs.size() - 1);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM