class BitwiseOpsDemo {
public static void main
(String[] args
) {
int packed = 0;
// Enable bits located at 0x20 and 0x2, respectively
packed |= 1 << 5;
packed |= 1 << 2;
out.
println("packed = " + Integer.
toBinaryString(packed
));
// To determine what is set at a particular bit, mask the value and compare it with the mask
boolean isShift5 = (packed & 0x20) == 0x20;
boolean isShift6 = (packed & 0x40) == 0x40;
// You don’t need to hardcode the mask, you can also compute the mask
int shift2Mask = 1 << 2;
out.
println("shift2Mask = " + Integer.
toBinaryString(shift2Mask
));
boolean isShift2 = (packed & shift2Mask) == shift2Mask;
out.println("fifth = " + isShift5 + " | sixth = " + isShift6 + " | second = " + isShift2);
}
}
Y2xhc3MgQml0d2lzZU9wc0RlbW8gewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewoJICAgIGphdmEuaW8uUHJpbnRTdHJlYW0gb3V0ID0gU3lzdGVtLm91dDsKCiAgICAgICAgaW50IHBhY2tlZCA9IDA7CiAgICAgICAgCiAgICAgICAgLy8gRW5hYmxlIGJpdHMgbG9jYXRlZCBhdCAweDIwIGFuZCAweDIsIHJlc3BlY3RpdmVseQogICAgICAgIHBhY2tlZCB8PSAxIDw8IDU7CiAgICAgICAgcGFja2VkIHw9IDEgPDwgMjsKICAgICAgICBvdXQucHJpbnRsbigicGFja2VkID0gIiArIEludGVnZXIudG9CaW5hcnlTdHJpbmcocGFja2VkKSk7CgogICAgICAgIC8vIFRvIGRldGVybWluZSB3aGF0IGlzIHNldCBhdCBhIHBhcnRpY3VsYXIgYml0LCBtYXNrIHRoZSB2YWx1ZSBhbmQgY29tcGFyZSBpdCB3aXRoIHRoZSBtYXNrCiAgICAgICAgYm9vbGVhbiBpc1NoaWZ0NSA9IChwYWNrZWQgJiAweDIwKSA9PSAweDIwOwogICAgICAgIGJvb2xlYW4gaXNTaGlmdDYgPSAocGFja2VkICYgMHg0MCkgPT0gMHg0MDsKICAgICAgICAKICAgICAgICAvLyBZb3UgZG9u4oCZdCBuZWVkIHRvIGhhcmRjb2RlIHRoZSBtYXNrLCB5b3UgY2FuIGFsc28gY29tcHV0ZSB0aGUgbWFzawogICAgICAgIGludCBzaGlmdDJNYXNrID0gMSA8PCAyOwogICAgICAgIG91dC5wcmludGxuKCJzaGlmdDJNYXNrID0gIiArIEludGVnZXIudG9CaW5hcnlTdHJpbmcoc2hpZnQyTWFzaykpOwoKICAgICAgICAKICAgICAgICBib29sZWFuIGlzU2hpZnQyID0gKHBhY2tlZCAmIHNoaWZ0Mk1hc2spID09IHNoaWZ0Mk1hc2s7CiAgICAgICAKICAgICAgICBvdXQucHJpbnRsbigiZmlmdGggPSAiICsgaXNTaGlmdDUgKyAiIHwgc2l4dGggPSAiICsgaXNTaGlmdDYgKyAiIHwgc2Vjb25kID0gIiArIGlzU2hpZnQyKTsKCX0KfQ==