Tips for performing Bitmanipulation

I have covered some of the basics concepts for BitManipulation which everyone should know while playing with Bits...!!

IF YOU KNOW THE BASICS SKIP TO 8Th point!

1)Bitwise AND(&)Returns bit values of 1 for positions where both numbers had a one, and bit values of 0 where both numbers did not have one.

2)Bitwise OR(|)returns bit values of 1 for positions where either bit or both bits are one, the result of 0 only happens when both bits are 0.

3)Bitwise XOR(^)returns bit values of 1 for positions where both bits are different; if they are the same then the result is 0.

4)Bitwise Left-shift(<<)The bitwise left shift moves all bits in the number to the left and fills vacated bit positions with 0.

5)Bitwise RIght-Shift(>>)The bitwise right shift moves all bits in the number to the right.

NOTE: Where the left shift filled the vacated positions with 0, a right shift will do the same only when the value is unsigned. If the value is signed then a right shift will fill the vacated bit positions with the sign bit or 0, whichever is implementation-defined. So the best option is never right to shift the signed value

6)Bitwise Complement(~)The bitwise complement inverts the bits in a single binary number.

7)Checking Whether K-th Bit is Set or Not n & (1 ? K -1). If the expression is true then we can say the Kth bit is set

8)Setting K-th Bit: n | 1 ? (K – 1)

9)Clearing K-th Bit: n & ~(1 ? K – 1)

10)Toggling K-th Bit: n ^(1 ? K – 1)

11)Toggling Rightmost One Bit: n & n – 1

12)Isolating Rightmost Zero Bit : ~n & n + 1

13)Checking Whether Number is Power of 2 or Not : if(n & n – 1 == 0)

14)Multiplying Number by Power of 2: to multiply the number with 2K we can use the expression: n ? K

15)Dividing Number by Power of 2: divide the number by 2K we can use the expression: n ? K

16)Performing Average without DivisionWe can use mid = (low + high) >> 1. Note that using (low + high) / 2 for midpoint calculations won't work correctly when integer overflow becomes an issue. We can use bit shifting and also overcome a possible overflow issue: low + ((high – low)/ 2) and the bit shifting operation for this is low + ((high – low) >> 1)

Shivam Pandey

Your Dreams + My Expertise = Scalable, Performant, Reliable and Intuitive Products | BNP Paribas

2 年
回复

要查看或添加评论,请登录

Shivam Pandey的更多文章

社区洞察

其他会员也浏览了