Return (x && !(x & (x - 1)));

i am not able to understand && in return .
sir please explain it to me .
with some example
and i read that when x is power of two

x&(x-1) is 0 but on stackoveflow it is given that 0 when x is not power of two

for ex
8=1000
7=0 1 1 1
&

0000

and 8 is power of 2

@Ankit_kumar_3003 hey,&& operator is used with return when you have to check that both conditions are true ,if both conditions are true then return will return true and if any of condition is false,then it return false.
If we subtract a power of 2 numbers by 1 then all unset bits after the only set bit become set; and the set bit become unset.

For example for 4 ( 100) and 16(10000), we get following after subtracting 1
3 –> 011
15 –> 01111

So, if a number n is a power of 2 then bitwise & of n and n-1 will be zero. We can say n is a power of 2 or not based on value of n&(n-1). The expression n&(n-1) will not work when n is 0. To handle this case also, our expression will become n& (!n&(n-1))