1. 程式人生 > >bit的置位,復位與測試

bit的置位,復位與測試

在C++中,有bitset類,可以作為bit的使用,下面進行如何利用32位的int型整數來進行位操作

首先宣告需要存放的位數:

#define N 10000000

每一個int存放32位

#define BITSPERWORD 32

#define SHIFT 5

#defien MASK 0x1f

存的記憶體空間

int a[1+N/BITSPERWORD]

void set(int)

{ a[i>>SHIFT] |= (1<<(i&MASK))}

void clr(int)

{ a[i>>SHIFT] &= ~(1<<(i&MASK))}
void test(int)

{ return a[i>>SHIFT] & (1<<(i&MASK))}

上面的三個函式相似,i<<SHIFT代表的意思是找到第i位所在的int陣列的位置,例如i=2000,i<<SHIFT=62,就是把i所在的高位,放在了a[62]中的相應的位,i&MASK=16是求i的低32位,對應於所在位的餘數,總的來說就是在a[62]的第16位