# Java Data Type How to - Performing Bitwise Operations with BigInteger

## Question

We would like to know how to performing Bitwise Operations with BigInteger.

```import java.math.BigInteger;
/*from  w w w .  ja va 2  s  .  c  o m*/
public class Main {
public static void main(String[] argv) throws Exception {
byte[] bytes = new byte[] { 0x1, 0x00, 0x00 };
BigInteger bi = new BigInteger(bytes);
boolean b = bi.testBit(3);
b = bi.testBit(16);
}
}
```

Get the value of a bit

```import java.math.BigInteger;
/*from   ww w  . ja v  a 2 s . c o  m*/
public class Main {
public static void main(String[] argv) throws Exception {
byte[] bytes = new byte[] { 0x1, 0x00, 0x00 };
BigInteger bi = new BigInteger(bytes);
boolean b = bi.testBit(3);
b = bi.testBit(16);
}
}
```

Set a bit for BigInteger

```import java.math.BigInteger;
//from   www.ja  va 2 s  . c o m
public class Main {
public static void main(String[] argv) throws Exception {
byte[] bytes = new byte[] { 0x1, 0x00, 0x00 };
BigInteger bi = new BigInteger(bytes);
bi = bi.setBit(3);

}
}
```

Clear a bit in a BigInteger

```import java.math.BigInteger;
/*w  w  w  . j  av  a2  s  .c om*/
public class Main {
public static void main(String[] argv) throws Exception {
byte[] bytes = new byte[] { 0x1, 0x00, 0x00 };
BigInteger bi = new BigInteger(bytes);
bi = bi.clearBit(3);

}
}
```

Flip a bit in a BigInteger

```import java.math.BigInteger;
/*  ww w. j ava 2 s .  co m*/
public class Main {
public static void main(String[] argv) throws Exception {
byte[] bytes = new byte[] { 0x1, 0x00, 0x00 };
BigInteger bi = new BigInteger(bytes);
bi = bi.flipBit(3);

}
}
```

Shift the bits in a BigInteger

```import java.math.BigInteger;
//ww  w .  j a v a 2  s  .  c  o m
public class Main {
public static void main(String[] argv) throws Exception {
byte[] bytes = new byte[] { 0x1, 0x00, 0x00 };
BigInteger bi = new BigInteger(bytes);
bi = bi.shiftLeft(3);

}
}
```

Shift right in a BigInteger

```import java.math.BigInteger;
/*  ww w  . j  a  v  a 2 s. co  m*/
public class Main {
public static void main(String[] argv) throws Exception {
byte[] bytes = new byte[] { 0x1, 0x00, 0x00 };
BigInteger bi = new BigInteger(bytes);
bi = bi.shiftRight(1);

}
}
```

xor a BigInteger

```import java.math.BigInteger;
/*from  w ww .ja  v a 2  s . c o  m*/
public class Main {
public static void main(String[] argv) throws Exception {
byte[] bytes = new byte[] { 0x1, 0x00, 0x00 };
BigInteger bi = new BigInteger(bytes);

bi = bi.xor(bi);
}
}
```

and operation on BigInteger

```import java.math.BigInteger;

public class Main {
public static void main(String[] argv) throws Exception {
byte[] bytes = new byte[] { 0x1, 0x00, 0x00 };
BigInteger bi = new BigInteger(bytes);
bi = bi.and(bi);
}
}
```

not operation for BigInteger

```import java.math.BigInteger;

public class Main {
public static void main(String[] argv) throws Exception {
byte[] bytes = new byte[] { 0x1, 0x00, 0x00 };
BigInteger bi = new BigInteger(bytes);
bi = bi.not();
}
}
```

or operation for BigInteger

```import java.math.BigInteger;

public class Main {
public static void main(String[] argv) throws Exception {
byte[] bytes = new byte[] { 0x1, 0x00, 0x00 };
BigInteger bi = new BigInteger(bytes);
bi = bi.or(bi);
}
}
```

andNot operation on BigInteger

```import java.math.BigInteger;

public class Main {
public static void main(String[] argv) throws Exception {
byte[] bytes = new byte[] { 0x1, 0x00, 0x00 };
BigInteger bi = new BigInteger(bytes);
bi = bi.andNot(bi);
}
}
```

Retrieve the current bits in a byte array in twos-complement form.

```import java.math.BigInteger;

public class Main {
public static void main(String[] argv) throws Exception {
byte[]  bytes = new byte[] { 0x1, 0x00, 0x00 };
BigInteger bi = new BigInteger(bytes);
bytes = bi.toByteArray();
}
}
```