gpt4 book ai didi

c++ - 我怎样才能增加 std::bitset

转载 作者:可可西里 更新时间:2023-11-01 18:29:30 25 4
gpt4 key购买 nike

如何在 std::bitset<128> 上实现增量?在 C++ 中?

因为 bitset 是 128 位长,我不能简单地做

std::bitset<128> set = std::bitset<128>();

set = std::bitset<128>(set.to_ulong() + 1ULL);

最佳答案

我同意 Oli 的观点,如果你想做“大整数”的东西,那么你应该使用大整数库。

但是,如果您真的想要使用 std::bitset 来执行此操作,则您需要自己进行算术运算。

template <size_t N>
std::bitset<N> increment ( std::bitset<N> in ) {
// add 1 to each value, and if it was 1 already, carry the 1 to the next.
for ( size_t i = 0; i < N; ++i ) {
if ( in[i] == 0 ) { // There will be no carry
in[i] = 1;
break;
}
in[i] = 0; // This entry was 1; set to zero and carry the 1
}
return in;
}

int main () {
std::bitset<32> foo;
std::cout << foo.to_ulong () << ' ';
foo = increment ( foo );
std::cout << foo.to_ulong () << ' ';
foo = increment ( foo );
std::cout << foo.to_ulong () << ' ';
foo = increment ( foo );
std::cout << foo.to_ulong () << std::endl;

return 0;
}

这会为我打印 0 1 2 3

关于c++ - 我怎样才能增加 std::bitset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16761472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com