|
@ -40,6 +40,7 @@ printbits(int n) { |
|
|
int* |
|
|
int* |
|
|
new_bitarray(int size) { |
|
|
new_bitarray(int size) { |
|
|
int *barray = malloc((sizeof (int)) * size); |
|
|
int *barray = malloc((sizeof (int)) * size); |
|
|
|
|
|
|
|
|
int i; |
|
|
int i; |
|
|
for(i = 0; i < size; i++) { |
|
|
for(i = 0; i < size; i++) { |
|
|
barray[i] = 0; |
|
|
barray[i] = 0; |
|
@ -65,12 +66,30 @@ setbit(int* arr, int k) { |
|
|
return 0; |
|
|
return 0; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int |
|
|
|
|
|
unsetbit(int* arr, int k) { |
|
|
|
|
|
int i = k/32; |
|
|
|
|
|
|
|
|
|
|
|
int pos = k % 32; |
|
|
|
|
|
|
|
|
|
|
|
unsigned int flag = 1; |
|
|
|
|
|
|
|
|
|
|
|
flag = ~(flag << pos); |
|
|
|
|
|
|
|
|
|
|
|
arr[i] = arr[i] & flag; |
|
|
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
int |
|
|
int |
|
|
main (void) { |
|
|
main (void) { |
|
|
int *test = new_bitarray(5); |
|
|
int *test = new_bitarray(5); |
|
|
setbit(test, 6); |
|
|
setbit(test, 6); |
|
|
setbit(test, 4); |
|
|
setbit(test, 4); |
|
|
setbit(test, 2); |
|
|
setbit(test, 2); |
|
|
|
|
|
unsetbit(test, 6); |
|
|
|
|
|
unsetbit(test, 4); |
|
|
|
|
|
unsetbit(test, 2); |
|
|
printbits(test[0]); |
|
|
printbits(test[0]); |
|
|
return EXIT_SUCCESS; |
|
|
return EXIT_SUCCESS; |
|
|
} |
|
|
} |
|
|