Conditionally negate a value without branching

In this post, we will see how to conditionally negate a value without branching.   The expression ((flag^(flag-1))*n) negate n when the flag is false and the expression ((n^-flag)+flag) negate n when the flag is true.   How does it work?   1. For (flag ^ (flag – 1)) * n if flag = 0, …

Check if adjacent bits are set in binary representation of a given number

Given a number, check if adjacent bits are set in binary representation of it.   Naive Solution would be to consider every bit present in the number one by one and compare it with its previous bit. If the current bit is same as previous bit, then we have found a pair whose adjacent bits …

Bit Hacks – Part 6 (Random Problems)

In this post, we will discuss few unrelated problems that can be solved using bit manipulation hacks.   1. Find number of bits needed to be flipped to convert given integer to another The idea is to take XOR of given two integers. After calculating the XOR, the problem will reduces to counting set bits …

Find XOR of two numbers without using XOR operator

Write a program to find XOR of two numbers without using XOR operator.   Naive Solution would be to consider every bit present in both numbers one by one (either from left or right) and compare them. If the current bit is same in both numbers (i.e. both are 0 or both are 1), we …

Bit Hacks – Part 4 (Playing with letters of English alphabet)

In this post we will discuss some of the bit hacks/tricks on letters of English alphabet.   Below tricks are covered in this post – Trick 1. Convert uppercase character to lowercase Trick 2. Convert lowercase character to uppercase Trick 3. Invert alphabet’s case Trick 4. Find letter’s position in alphabet     Trick 1. …

Bit Hacks – Part 3 (Playing with rightmost set bit of a number)

In this post we will discuss few related problems that are related to unsetting the rightmost set bit of a number.   How to unset the rightmost set bit of a number? The expression (n & (n – 1)) will turn off the rightmost set bit of given number. (n – 1) will have all …

Bit Hacks – Part 2 (Playing with k’th bit)

In this post we will discuss few related problems that operates on the k’th bit of a number.   Below problems are covered in this post – Problem 1. Turn off kth bit in a number Problem 2. Turn on kth bit in a number Problem 3. Check if kth bit is set for a …

Bit Hacks – Part 1 (Basic)

With this post, we will start a series of amazing bit manipulation hacks that every programmer should know.   Below problems are covered in this post – Problem 1. Check if an given integer is even or odd Problem 2. Detect if two integers have opposite signs or not Problem 3. Add 1 to a …