まず第一に、あなたは基本的な演算ビット演算を知っておく必要があります。
私は<< I倍、すなわち、2進数後方Iゼロ加え2により行わ表す 1 << == ^ 3 * 2 * 3 * 2 1 2 2 == == == 8>( 1000)== 2(8)10
。11. 1 << 22 == ==>(11010)== 2である(22)と10
A >> iはi番目の右側に加えて、バイナリ番号2、すなわちを行っ表しますiビット
11 11 >> 1 == / 5 == == 2(101)== 2(5)10
バイナリ列挙(1)
= 11 INT; (I ++は; Iは<4。I = 0の整数)のための (1 "%のD"、I&A >>)のprintf; //各番号の最後に得られた動作1の数は1/0であり、
1011年101 101
・1・1・1・1
------ == "== ----" ---- ==「----
0001 001 01 1
GETは1,1,0でありますすなわち、数のそれぞれの2進数が、逆の順序では、配列に格納することができます
バイナリ列挙(2)
N-INT; のために(INT I = 0;私は<(N - << 1)。私は++)//列挙ケース2 ^ N -1の のprintf( "%dの"、I )。