2010-10-27 部分ビット列を列挙 1011001というようなmaskが与えられた時に、1001000だとかmaskに含まれるビット列(0を除く)を列挙する方法。 私は for ( int m = 1; m <= mask; m ++ ) if ( ( m | mask ) == mask ) とやってたけど、 for ( int m = mask; m > 0; m = ( m - 1 ) & mask ) とやれば全く無駄がないことを知った。