我有一个 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 long
或 unsigned 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/