MCPcopy Create free account
hub / github.com/careercup/ctci / BitVector

Class BitVector

java/CtCILibrary/CtCILibrary/BitVector.java:3–56  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1package CtCILibrary;
2
3public class BitVector {
4 private static int DATA_SIZE = 32;
5 private int length;
6 private int[] vector;
7
8 public BitVector(int length) {
9 this.length = length;
10 if (length % DATA_SIZE == 0) {
11 vector = new int[length / DATA_SIZE];
12 } else {
13 vector = new int[length / DATA_SIZE + 1];
14 }
15 }
16
17 public int length() {
18 return length;
19 }
20
21 public boolean get(int i) {
22 int b = vector[i / DATA_SIZE];
23 int bit_index = i % DATA_SIZE;
24 //00100010
25 if (((b >> bit_index) & 1) == 1) {
26 return true;
27 } else {
28 return false;
29 }
30 }
31
32 public void print() {
33 for (int k : vector) {
34 for (int i = 0; i < DATA_SIZE; i++) {
35 if ((k >> i & 1) == 1) {
36 System.out.print(1);
37 } else {
38 System.out.print(0);
39 }
40 }
41 System.out.println();
42 }
43 }
44
45 public void set(int i, boolean flag) {
46 if (i >= 0 && i < length) {
47 int mask = ~(1 << i);
48 int b = vector[i / DATA_SIZE] & mask;
49 if (flag) {
50 vector[i / DATA_SIZE] = b | (1 << i);
51 } else {
52 vector[i / DATA_SIZE] = b;
53 }
54 }
55 }
56}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected