annotate c/bitVector/main.cc @ 51:898e8d9e1c67

implement variable bitContainers array
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Mon, 01 Jun 2015 17:20:08 +0900
parents bb0e88fbbe02
children a2826bf4e80a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45
89a198fa6b23 add dfrTobin
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #include <stdio.h>
49
f76fe618d5a7 implement bitset
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
2 #include <stdlib.h>
f76fe618d5a7 implement bitset
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
3 #include <string.h>
f76fe618d5a7 implement bitset
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
4
51
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
5 typedef struct bitInfo {
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
6 int arrayNum;
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
7 unsigned long *bitContainer;
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
8 }BitInfo,*BitInfoPtr;
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
9
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
10 void bitSet(BitInfoPtr bi, int bitSetPosition) {
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
11
50
bb0e88fbbe02 impl bitGet and bitSet
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 49
diff changeset
12 unsigned long tmp = 1;
51
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
13 int arrayPosition = 0;
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
14
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
15 arrayPosition = bitSetPosition / 64;
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
16 bitSetPosition = bitSetPosition % 64;
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
17
50
bb0e88fbbe02 impl bitGet and bitSet
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 49
diff changeset
18 tmp = tmp << (63 - bitSetPosition);
51
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
19 bi->bitContainer[arrayPosition] = bi->bitContainer[arrayPosition] | tmp;
50
bb0e88fbbe02 impl bitGet and bitSet
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 49
diff changeset
20 }
49
f76fe618d5a7 implement bitset
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
21
51
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
22 void bitPrint(BitInfoPtr bi) {
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
23 for (int i = 0; i < bi->arrayNum ; i++) {
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
24 for (int j = 63; j >= 0; j--) {
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
25 printf( "%lu", ( bi->bitContainer[i] >> j ) & 1 );
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
26 }
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
27 printf(" ");
49
f76fe618d5a7 implement bitset
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
28 }
f76fe618d5a7 implement bitset
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
29 puts("");
f76fe618d5a7 implement bitset
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
30 }
f76fe618d5a7 implement bitset
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
31
f76fe618d5a7 implement bitset
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
32 int main(int argc, char **argv) {
f76fe618d5a7 implement bitset
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
33
51
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
34 BitInfoPtr bi = (BitInfoPtr)malloc(sizeof(BitInfo));
50
bb0e88fbbe02 impl bitGet and bitSet
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 49
diff changeset
35 int bitSetPosition = 0;
bb0e88fbbe02 impl bitGet and bitSet
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 49
diff changeset
36
49
f76fe618d5a7 implement bitset
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
37 for (int i = 1; i < argc ; i++) {
f76fe618d5a7 implement bitset
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
38 if (strcmp(argv[i],"-n") == 0) {
50
bb0e88fbbe02 impl bitGet and bitSet
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 49
diff changeset
39 bitSetPosition = atoi(argv[i+1]);
49
f76fe618d5a7 implement bitset
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
40 }
f76fe618d5a7 implement bitset
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
41 }
f76fe618d5a7 implement bitset
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
42
51
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
43 bi->arrayNum = (bitSetPosition + 1) / 64;
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
44 if (((bitSetPosition + 1) % 64) != 0) bi->arrayNum++;
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
45
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
46 printf("Array Num : %d\n",bi->arrayNum);
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
47
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
48 unsigned long bitContainer[bi->arrayNum];
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
49 for (int i = 0; i < bi->arrayNum; i++) {
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
50 bitContainer[i] = 0;
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
51 }
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
52
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
53 bi->bitContainer = bitContainer;
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
54 bitSet(bi,bitSetPosition);
898e8d9e1c67 implement variable bitContainers array
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
55 bitPrint(bi);
45
89a198fa6b23 add dfrTobin
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 return 0;
89a198fa6b23 add dfrTobin
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 }