Check if only one single bit is set within an integer (whatever its position)
binary, bit, bit-manipulation, bitwise-operators, java
Solution
If you just literally want to check if one single bit is set, then you are essentially checking if the number is a power of 2. To do this you can do:
if ((number & (number-1)) == 0) ...
This will also count 0 as a power of 2, so you should check for the number not being 0 if that is important. So then:
if (number != 0 && (number & (number-1)) == 0) ...
Problem
I store flags using bits within a 64-bits integer. I want to know if there is a single bit set whatever the position within the 64-bits integer (e.i. I do not care about the position of any specific bit). ``` boolean isOneSingleBitSet (long integer64) { return ....; } ``` I could count number of bits using the Bit Twiddling Hacks (by Sean Eron Anderson), but I am wondering what is the most efficient way to just detect whether one single bit is set... I found some other related questions: - (8051) Check if a single bit is set - Detecting single one-bit streams within an integer and also some Wikipedia pages: - Find first one - Bit manipulation - Hamming weight NB: my application is in java, but I am curious about optimizations using other languages... EDIT: Lưu Vĩnh Phúc pointed out that my first link within my question already got the answer: see section Determining if an integer is a power of 2 in the Bit Twiddling Hacks (by Sean Eron Anderson). I did not realized that one single bit was the same as power of two.