![](/img/trans.png)
[英]if the most-significant bit of most-significant byte is 1, then sample is negative
[英]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.