ねえ、プログラミング パールの本には、実際にはセット表現である int の配列で指定されたインデックスのビットを設定、クリア、およびテストするためのソース コードがあります。
コードは次のとおりです。
#include<stdio.h>
#define BITSPERWORD 32
#define SHIFT 5
#define MASK 0x1F
#define N 10000000
int a[1+ N/BITSPERWORD];
void set(int i)
{
a[i>>SHIFT] |= (1<<(i & MASK));
}
void clr(int i)
{
a[i>>SHIFT] &= ~(1<<(i & MASK));
}
int test(int i)
{
a[i>>SHIFT] & (1<<(i & MASK));
}
SHIFT と MASK が定義する理由を誰か説明してもらえますか? そして、コードでのそれらの目的は何ですか?
以前の関連する質問を読みました。