# HG changeset patch # User Masataka Kohagura # Date 1433408053 -32400 # Node ID a2826bf4e80ace50a6710a5b816bcef9a84874c1 # Parent 898e8d9e1c6757f3346fcfbd4f2521a2958df975 remove magic number diff -r 898e8d9e1c67 -r a2826bf4e80a c/bitVector/main.cc --- a/c/bitVector/main.cc Mon Jun 01 17:20:08 2015 +0900 +++ b/c/bitVector/main.cc Thu Jun 04 17:54:13 2015 +0900 @@ -2,6 +2,8 @@ #include #include +int bitBlock = sizeof(unsigned long) * 8; + typedef struct bitInfo { int arrayNum; unsigned long *bitContainer; @@ -12,16 +14,16 @@ unsigned long tmp = 1; int arrayPosition = 0; - arrayPosition = bitSetPosition / 64; - bitSetPosition = bitSetPosition % 64; + arrayPosition = bitSetPosition / bitBlock; + bitSetPosition = bitSetPosition % bitBlock; - tmp = tmp << (63 - bitSetPosition); + tmp = tmp << (bitBlock - 1 - bitSetPosition); bi->bitContainer[arrayPosition] = bi->bitContainer[arrayPosition] | tmp; } void bitPrint(BitInfoPtr bi) { for (int i = 0; i < bi->arrayNum ; i++) { - for (int j = 63; j >= 0; j--) { + for (int j = bitBlock - 1; j >= 0; j--) { printf( "%lu", ( bi->bitContainer[i] >> j ) & 1 ); } printf(" "); @@ -40,8 +42,8 @@ } } - bi->arrayNum = (bitSetPosition + 1) / 64; - if (((bitSetPosition + 1) % 64) != 0) bi->arrayNum++; + bi->arrayNum = (bitSetPosition + 1) / bitBlock; + if (((bitSetPosition + 1) % bitBlock) != 0) bi->arrayNum++; printf("Array Num : %d\n",bi->arrayNum);