c++ - 将 1 添加到 32 位的位集中

标签 c++ binary addition bitset

我有一个 32 位的位集,我希望使用二进制加法方法向其加 1。所以我有一个二进制格式,现在我想以二进制格式向它添加 1,是否有默认方法可以做到这一点,或者我必须为其创建一个函数。

    #include<string.h>
    #include<iostream>
    #include<bitset>
    #include<cstlib>
    int main(){
        int a;
        cin >> hex >> a;
        bitset<32> binary(a);
        }

最佳答案

std::bitset 可以从 unsigned longunsigned long long 进行分配。

它还有这些类型的访问器。

#include <bitset>

auto get() -> std::bitset<32>;
auto put(std::bitset<32>) -> void;

int main(){
    auto bs = get();
    bs = bs.to_ulong() + 1;
    put(bs);
}

示例汇编器输出:

main:
  sub rsp, 8
  call get()
  lea edi, [rax+1]
  call put(std::bitset<32ul>)
  xor eax, eax
  add rsp, 8
  ret

请注意,编译器足够聪明,可以意识到不需要进行任何复制或转换。

关于c++ - 将 1 添加到 32 位的位集中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45908059/

相关文章:

c++ - 如何将不同大小的数组传递给我的 C++ 函数?

c++ - SQL Server Compact Edition 3.5 为简单查询提供 "Multiple-step operation generated errors"错误

php - 基于之前MySQL查询的算术计算

Java JList 模型 addElement() 破坏了列表的视觉表示

python - 将十六进制数据写入文件

javascript处理框架加法NaN

c++ - C++ constexpr函数来测试预处理器宏

c++ - C++ 从内存中删除对象

python - 执行嵌入在 Python 脚本中的 .exe 文件

binary - 将 0 和 1 的二进制字符串转换为 Elixir 中的位串