コードで大きな数値 (128 ビット以上の整数) を使用しています。c++ には std::bitset がいくつかの操作を単純にするため、データをいくつかの整数に分割する必要がないことがわかりました。しかし、すぐに別の問題が見つかりました。いくつかの (長い) 整数をビットセットに変換する必要がある場合、それを行う最善の方法は何ですか? たとえば、4 つの long 整数 (それぞれ 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 ループを使用してビットセットの各ビットを設定していますが、より効率的でエレガントな方法を探しています。