我试图将十进制数转换为长度的位集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];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句