Bitwise Operations was one of the most confusing topics for me at first. But once I started understanding how bits actually work, many CP problems suddenly became much easier to think about and optimize.
This blog is the result of a full day of grinding, where I tried to organize everything I know about bitwise tricks into a clear and structured form — from the basics to useful CP patterns. I tried to keep everything as simple and beginner-friendly as possible so that anyone can understand the core idea behind each trick instead of memorizing formulas. If even one trick from this blog helps someone solve a problem faster or understand bits more clearly, then this effort feels truly meaningful for me.
And finally, I want to express my deepest gratitude to Raha Ahmed for being The Strongest supports in my CP journey. Her constant encouragement, belief and presence have played a huge role in shaping my progress and I’m truly grateful for everything she has done.








For division by right shift there is a big gotcha. It would always work for unsigned int x, or for non-negative int. For negative ints it's up to implementation of compiler. In practice it's usually arithmetic shift, so 31th bit would be copied in every bit position shifted in from the left, so negative numbers remain negative. But then division result is not correct when it should result in zero. For example, (-3)>>2 would give not zero but -1. Anyway compilers would optimize division by constant power of two.
Yes, correct. For non-negative numbers,
x >> kworks like division by2^k.But for negative integers, right shift behavior is implementation-defined in C++.
Most compilers use arithmetic shift, so sign bits get copied.
Example:
(-3) >> 2 = -1while-3 / 4 = 0Thanks for mentioning this. The post was mainly written for beginners, so I tried to keep the explanations simple.
Nice Content
Thanks a lot. I am glad you liked the Content.