#include <stdio.h> #define BITS 32 #define MASK 0x1F #define SHIFT 5 #define N 10000000 //支持N位的bit int a[1+N/BITS]; void set(int i) {a[i>>SHIFT] |= (1<<(i&MASK));} void clr(int i) {a[i>>SHIFT] &= ~(1<<(i&MASK));} int test(int i) {return a[i>>SHIFT] & (1<<(i&MASK));} void bit_print(int n){ int mask = 1<<(BITS-1); for (int i = 1; i <= BITS; i++){ putchar((n&mask) == 0?'0':'1'); n <<= 1; } } ///////////////////////// int main() { set(5); set(15); bit_print(a[0]); putchar('\n'); clr(15); bit_print(a[0]); putchar('\n'); printf("%d, %d", test(5), test(15) ); getchar(); } |
|