Mercurial > hg > Members > masakoha > testcode
comparison c/regexParser/bitVector.cc @ 86:1d7ca366b199
add bitVector
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 19 Oct 2015 18:04:05 +0900 |
parents | |
children | 43b807f88961 |
comparison
equal
deleted
inserted
replaced
85:5072a44ed842 | 86:1d7ca366b199 |
---|---|
1 #include <stdio.h> | |
2 #include <stdlib.h> | |
3 #include <string.h> | |
4 #include "bitVector.h" | |
5 | |
6 int bitBlock = sizeof(unsigned long) * 8; | |
7 | |
8 void bitSet(BitVectorPtr bi, int bitSetPosition) { | |
9 | |
10 unsigned long tmp = 1; | |
11 int arrayPosition = 0; | |
12 | |
13 arrayPosition = bitSetPosition / bitBlock; | |
14 bitSetPosition = bitSetPosition % bitBlock; | |
15 | |
16 tmp = tmp << (bitBlock - 1 - bitSetPosition); | |
17 bi->bitContainer[arrayPosition] = bi->bitContainer[arrayPosition] | tmp; | |
18 } | |
19 | |
20 void bitPrint(BitVectorPtr bi) { | |
21 for (int i = 0; i < bi->arrayNum ; i++) { | |
22 for (int j = bitBlock - 1; j >= 0; j--) { | |
23 printf( "%lu", ( bi->bitContainer[i] >> j ) & 1 ); | |
24 } | |
25 printf(" "); | |
26 } | |
27 puts(""); | |
28 } | |
29 /* | |
30 int main(int argc, char **argv) { | |
31 | |
32 BitVectorPtr bi = (BitVectorPtr)malloc(sizeof(BitVector)); | |
33 int bitSetPosition = 0; | |
34 | |
35 for (int i = 1; i < argc ; i++) { | |
36 if (strcmp(argv[i],"-n") == 0) { | |
37 bitSetPosition = atoi(argv[i+1]); | |
38 } | |
39 } | |
40 | |
41 bi->arrayNum = (bitSetPosition + 1) / bitBlock; | |
42 if (((bitSetPosition + 1) % bitBlock) != 0) bi->arrayNum++; | |
43 | |
44 printf("Array Num : %d\n",bi->arrayNum); | |
45 | |
46 unsigned long bitContainer[bi->arrayNum]; | |
47 for (int i = 0; i < bi->arrayNum; i++) { | |
48 bitContainer[i] = 0; | |
49 } | |
50 | |
51 bi->bitContainer = bitContainer; | |
52 bitSet(bi,bitSetPosition); | |
53 bitPrint(bi); | |
54 return 0; | |
55 } | |
56 */ |