Round to next smaller multiple of 8

• Last Updated : 12 May, 2021

Given an unsigned integer x. Round it down to the next smaller multiple of 8 using bitwise operations only.
Examples:

Input : 35
Output : 32

Input : 40
Output : 40
As 40 is already a multiple of 8. So, no
modification is done.

Solution 1: A naive approach to solve this problem using arithmetic operators is :
Let x be the number then,
x = x – (x % 8)
This will round down x to the next smaller multiple of 8. But we are not allowed to use arithmetic operators.
Solution 2: An efficient approach to solve this problem using bitwise AND operation is: x = x & (-8)
This will round down x to the next smaller multiple of 8. The idea is based on the fact that last three bits in a multiple of 8 must be 0,
Below is the implementation of above idea:

C++

 // CPP program to find next smaller// multiple of 8.#include using namespace std; int RoundDown(int& a){    return a & (-8);} int main(){    int x = 39;    cout << RoundDown(x);    return 0;}

Java

 //Java program to find next smaller// multiple of 8. import java.io.*; class GFG {static int RoundDown(int a){    return a & (-8);}     public static void main (String[] args) {     int x = 39;    System.out.println (RoundDown(x));    }}//This Code is Contributed by ajit

Python3

 # Python 3 program to find next# smaller multiple of 8. def RoundDown(a):    return a & (-8) # Driver Codeif __name__ == '__main__':    x = 39    print(RoundDown(x)) # This code is contributed# by Surendra_Gangwar

C#

 // C# program to find next smaller// multiple of 8.using System; class GFG{static int RoundDown(int a){    return a & (-8);} public static void Main(){    int x = 39;    Console.Write(RoundDown(x));}} // This code is contributed// by Akanksha Rai



Javascript


Output:
32

Time Complexity: The time complexity of this approach is O(1)
Space Complexity: The space complexity of this approach is O(1)

My Personal Notes arrow_drop_up