import
java.util.BitSet;
public
class
BitMatrix {
public
static
void
main(String[] args)
{
System.out.println(
"Bit Matrix Implementation"
);
try
{
MatrixBuilder bmat =
new
MatrixBuilder(
2
,
2
);
bmat.set(
0
,
0
);
bmat.display();
bmat.set(
0
,
1
);
bmat.display();
bmat.set(
1
,
0
);
bmat.display();
bmat.set(
1
,
1
);
bmat.display();
bmat.clear(
0
,
1
);
bmat.display();
bmat.and(
0
,
1
);
bmat.display();
bmat.xor(
0
,
1
);
bmat.display();
bmat.or(
0
,
1
);
bmat.display();
}
catch
(Exception e) {
System.out.println(
"Error due to "
+ e);
}
}
}
class
MatrixBuilder {
public
BitSet[] bitArray;
public
MatrixBuilder(
int
rows,
int
cols)
{
bitArray =
new
BitSet[rows];
int
i =
0
;
while
(i < rows) {
bitArray[i] =
new
BitSet(cols);
i++;
}
}
public
void
clear()
{
int
rows = bitArray.length;
int
cols = bitArray[
0
].size();
bitArray =
new
BitSet[rows];
int
i =
0
;
while
(i < rows) {
bitArray[i] =
new
BitSet(cols);
i++;
}
}
public
void
xor(
int
row1,
int
row2)
{
bitArray[row1].xor(bitArray[row2]);
}
public
void
clear(
int
r,
int
c)
{
bitArray[r].clear(c);
}
public
boolean
get(
int
r,
int
c)
{
return
bitArray[r].get(c);
}
public
void
set(
int
r,
int
c) { bitArray[r].set(c); }
public
void
and(
int
row1,
int
row2)
{
bitArray[row1].and(bitArray[row2]);
}
public
void
or(
int
row1,
int
row2)
{
bitArray[row1].or(bitArray[row2]);
}
public
void
display()
{
System.out.println(
"\nBit Matrix : "
);
for
(BitSet bs : bitArray)
System.out.println(bs);
System.out.println();
}
}