nビットのすべての可能な2^n状態にわたってCでループを作成したいと思います。たとえば、n = 4の場合、0000、0001、0010、0011、...、1110、1111をループします。ビットは任意の方法で表すことができます。たとえば、値が0または値がnの長さnの整数配列です。 1、または値が「0」または「1」の長さnの文字配列など、実際には問題ではありません。
小さいnの場合、私が行うことは、整数演算(nとxの両方が整数)を使用してx = 2 ^ nを計算し、次に
for(i=0;i<x;i++) {
bits = convert_integer_to_bits( i );
work_on_bits( bits );
}
ここで、「ビット」はビットの指定された表現にあります。これまでに有用だったのは、値が0または1の長さnの整数配列です(ただし、他の値でもかまいません)。
n> 32の場合、このアプローチは明らかにロングでも機能しません。
n> 32でどのように作業しますか?
具体的には、本当に2 ^ nを評価する必要がありますか、それとも2 ^ nの実際の値を参照しないが、それでも2 ^ n回繰り返すループを書くためのトリッキーな方法はありますか?