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 */