我在我的代码中使用了一个大数字(超过 128 位整数)。我发现 C++ 有 std::bitset 来简单一些操作,所以我不必将我的数据分成几个整数。但是我很快就发现了另一个问题,如果我必须将几个(长)整数转换为位集,那么最好的方法是什么?例如,我正在尝试将四个长整数(每个 32 位)转换为 128 位位集,以下方式不起作用,因为对于每个整数(移位操作仅适用于小于 32 的移位位)
std::bitset<256> b;
unsigned long v1=2, v2=9, v3=19, v4=1021;
b |= v1 | (v2<<32) | (v3<<64) | (v4<<128);
现在我使用一个 for 循环来设置 bitset 上的每个位,但我正在寻找一种更有效和更优雅的方式来做到这一点。