99 lines
3.1 KiB
Java
99 lines
3.1 KiB
Java
// operators/BitManipulation.java
|
|
// (c)2021 MindView LLC: see Copyright.txt
|
|
// We make no guarantees that this code is fit for any purpose.
|
|
// Visit http://OnJava8.com for more book information.
|
|
// Using the bitwise operators
|
|
import java.util.*;
|
|
|
|
public class BitManipulation {
|
|
public static void main(String[] args) {
|
|
Random rand = new Random(47);
|
|
int i = rand.nextInt();
|
|
int j = rand.nextInt();
|
|
printBinaryInt("-1", -1);
|
|
printBinaryInt("+1", +1);
|
|
int maxpos = 2147483647;
|
|
printBinaryInt("maxpos", maxpos);
|
|
int maxneg = -2147483648;
|
|
printBinaryInt("maxneg", maxneg);
|
|
printBinaryInt("i", i);
|
|
printBinaryInt("~i", ~i);
|
|
printBinaryInt("-i", -i);
|
|
printBinaryInt("j", j);
|
|
printBinaryInt("i & j", i & j);
|
|
printBinaryInt("i | j", i | j);
|
|
printBinaryInt("i ^ j", i ^ j);
|
|
printBinaryInt("i << 5", i << 5);
|
|
printBinaryInt("i >> 5", i >> 5);
|
|
printBinaryInt("(~i) >> 5", (~i) >> 5);
|
|
printBinaryInt("i >>> 5", i >>> 5);
|
|
printBinaryInt("(~i) >>> 5", (~i) >>> 5);
|
|
|
|
long l = rand.nextLong();
|
|
long m = rand.nextLong();
|
|
printBinaryLong("-1L", -1L);
|
|
printBinaryLong("+1L", +1L);
|
|
long ll = 9223372036854775807L;
|
|
printBinaryLong("maxpos", ll);
|
|
long lln = -9223372036854775808L;
|
|
printBinaryLong("maxneg", lln);
|
|
printBinaryLong("l", l);
|
|
printBinaryLong("~l", ~l);
|
|
printBinaryLong("-l", -l);
|
|
printBinaryLong("m", m);
|
|
printBinaryLong("l & m", l & m);
|
|
printBinaryLong("l | m", l | m);
|
|
printBinaryLong("l ^ m", l ^ m);
|
|
printBinaryLong("l << 5", l << 5);
|
|
printBinaryLong("l >> 5", l >> 5);
|
|
printBinaryLong("(~l) >> 5", (~l) >> 5);
|
|
printBinaryLong("l >>> 5", l >>> 5);
|
|
printBinaryLong("(~l) >>> 5", (~l) >>> 5);
|
|
}
|
|
static void printBinaryInt(String s, int i) {
|
|
System.out.println(
|
|
s + ", int: " + i + ", binary:\n " +
|
|
Integer.toBinaryString(i));
|
|
}
|
|
static void printBinaryLong(String s, long l) {
|
|
System.out.println(
|
|
s + ", long: " + l + ", binary:\n " +
|
|
Long.toBinaryString(l));
|
|
}
|
|
}
|
|
/* Output: (First 32 Lines)
|
|
-1, int: -1, binary:
|
|
11111111111111111111111111111111
|
|
+1, int: 1, binary:
|
|
1
|
|
maxpos, int: 2147483647, binary:
|
|
1111111111111111111111111111111
|
|
maxneg, int: -2147483648, binary:
|
|
10000000000000000000000000000000
|
|
i, int: -1172028779, binary:
|
|
10111010001001000100001010010101
|
|
~i, int: 1172028778, binary:
|
|
1000101110110111011110101101010
|
|
-i, int: 1172028779, binary:
|
|
1000101110110111011110101101011
|
|
j, int: 1717241110, binary:
|
|
1100110010110110000010100010110
|
|
i & j, int: 570425364, binary:
|
|
100010000000000000000000010100
|
|
i | j, int: -25213033, binary:
|
|
11111110011111110100011110010111
|
|
i ^ j, int: -595638397, binary:
|
|
11011100011111110100011110000011
|
|
i << 5, int: 1149784736, binary:
|
|
1000100100010000101001010100000
|
|
i >> 5, int: -36625900, binary:
|
|
11111101110100010010001000010100
|
|
(~i) >> 5, int: 36625899, binary:
|
|
10001011101101110111101011
|
|
i >>> 5, int: 97591828, binary:
|
|
101110100010010001000010100
|
|
(~i) >>> 5, int: 36625899, binary:
|
|
10001011101101110111101011
|
|
...
|
|
*/
|