c++ - C++:如何获取位集的 MSB(最高有效位)(使用按位运算符)?
问题描述
我正在尝试将十进制数转换为长度的位集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];
推荐阅读
- python - Getting error message trying to use defined functions for simple equation
- reactjs - 如何找到 React 警告所指的特定组件?
- android - 在 Mac 上的 android 模拟器上运行的 Expo
- laravel - 带有 GraphQl 分页的 Vue.js
- vba - 如何在 Outlook 中保存已发送的邮件
- javascript - 在商店 Woocommerce 中的产品下显示类别 - 继续显示“数组”
- vb.net - vb.net 中是否有使用 winforms 调用的事件列表框已完成加载
- hibernate - Lucene BigDecimal 范围查询
- javascript - 从数组 JavaScript 求和
- xml - 试图从 Xml 文件中读取单个字符串