and演算での剰余演算
#include <stdio.h>
void main()
{
int i;
for ( i=0; i<16; i++ ) printf( "%d ", i % 2 );
printf( "\n" );
for ( i=0; i<16; i++ ) printf( "%d ", i & 1 );
printf( "\n" );
for ( i=0; i<16; i++ ) printf( "%d ", i % 4 );
printf( "\n" );
for ( i=0; i<16; i++ ) printf( "%d ", i & 3 );
printf( "\n" );
for ( i=0; i<16; i++ ) printf( "%d ", i % 8 );
printf( "\n" );
for ( i=0; i<16; i++ ) printf( "%d ", i & 7 );
printf( "\n" );
for ( i=0; i<16; i++ ) printf( "%d ", i % 16 );
printf( "\n" );
for ( i=0; i<16; i++ ) printf( "%d ", i & 15 );
printf( "\n" );
}
実行結果
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3
0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
i % (n2) は i & (n2-1) と同じである。