Compute n modulo d without division(/) and modulo(%) operators, where d is a power of 2 number.
Let ith bit from right is set in d. For getting n modulus d, we just need to return 0 to i-1 (from right) bits of n as they are and other bits as 0.
For example if n = 6 (00..110) and d = 4(00..100). Last set bit in d is at position 3 (from right side). So we need to return last two bits of n as they are and other bits as 0, i.e., 00..010.
Now doing it is so easy, guess it….
Yes, you have guessing it right. See the below program.
Please write comments if you find any bug in the above program/algorithm or other ways to solve the same problem.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- Optimization Techniques | Set 1 (Modulus)
- Check a number is odd or even without modulus operator
- Calculate 7n/8 without using division and multiplication operators
- Cyclic Redundancy Check and Modulo-2 Division
- Divide two integers without using multiplication, division and mod operator
- Fast average of two numbers without division
- First number to leave an odd remainder after repetitive division by 2
- Compute the minimum or maximum of two integers without branching
- Compute the integer absolute value (abs) without branching
- Compute the parity of a number using XOR and table look-up
- Rearrange array to make Bitwise XOR of similar indexed elements of two arrays is same
- Sum of Bitwise AND of all pairs possible from two arrays
- Count numbers in range [L, R] having K consecutive set bits
- Count pairs having Bitwise XOR less than K from given array
Improved By : vt_m