sieve[2] int 3つを96ビッ トとして使う sieve[1] sieve[0] 32ビット 53ビット目 21 32 sieve[53/32=1]の 53%32=21ビット目 iビット目はsieve[i/32]のi%32ビット目 3ビット目を1にセットする 01010101010101010101010101010101 sieve[j] 00000000000000000000000000000001 1 00000000000000000000000000001000 1<<3 | 01010101010101010101010101011101 sieve[j]|(1<<3) kビット目を1にセットする sieve[j]|(1<<k) 3ビット目を0にリセットする 10101010101010101010101010101010 sieve[j] 00000000000000000000000000000001 1 00000000000000000000000000001000 1<<3 11111111111111111111111111110111 ~(1<<3) & 10101010101010101010101010100010 sieve[j]&~(1<<3) kビット目を0にリセットする sieve[j]&~(1<<k)
© Copyright 2024 ExpyDoc