# 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 Code``if` `__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`

## PHP

 ``

## 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