Round to next greater multiple of 8

04 Jul, 2022
Given an unsigned integer x. Round it up to the next greater multiple of 8 using bitwise operations only.Examples:  
Input : 35
Output : 40

Input : 64
Output : 64 (As 64 is already a multiple of 8. So, no modification is done.)
 
Solution 1: We first add 7 and get a number x + 7, then we use the technique to find next smaller multiple of 8 for (x+7). For example, if x = 12, we add 7 to get 19. Now we find next smaller multiple of 19, which is 16.Solution 2: An efficient approach to solve this problem using bitwise AND operation is: x = (x + 7) &(-8) This will round up x to the next greater multiple of 8.  
C++
Java
Python 3
C#
PHP
Javascript
// CPP program to find smallest greater multiple// of 8 for a given number#include <bits/stdc++.h>using namespace std; // Returns next greater multiple of 8int RoundUp(int& x){    return ((x + 7) & (-8));} int main(){    int x = 39;    cout << RoundUp(x);    return 0;}
// Java program to find smallest// greater multiple of 8 for// a given numberimport java.util.*;import java.lang.*; // Returns next greater// multiple of 8class GFG{    static int RoundUp(int x)    {        return ((x + 7) & (-8));    }         // Driver Code    public static void main(String args[])    {        int x = 39;        System.out.println(RoundUp(x));    }} // This code is contributed// by Akanksha Rai(Abby_akku)
# Python 3 program to find# smallest greater multiple# of 8 for a given number # Returns next greater# multiple of 8def RoundUp(x):    return ((x + 7) & (-8))     # Driver Codex = 39print(RoundUp(x)) # This code is contributed# by prerna saini
// C# program to find smallest// greater multiple of 8 for// a given numberusing System; // Returns next greater// multiple of 8class GFG{    static int RoundUp(int x)    {        return ((x + 7) & (-8));    }         // Driver Code    public static void Main()    {        int x = 39;        Console.WriteLine(RoundUp(x));    }} // This code is contributed// by SoumikMondal
<?php// PHP program to find smallest greater// multiple of 8 for a given number // Returns next greater// multiple of 8function RoundUp($x){    return (($x + 7) & (-8));} // Driver Code$x = 39;echo RoundUp($x); // This code is contributed// by Akanksha Rai(Abby_akku)?>
<script>    // Javascript program to find smallest    // greater multiple of 8 for    // a given number         // Returns next greater    // multiple of 8    function RoundUp(x)    {        return ((x + 7) & (-8));    }         let x = 39;      document.write(RoundUp(x)); </script>
40
Time Complexity: O(1) Space Complexity: O(1)
Solution 3:
An efficient approach to solve this problem is using shift operators, as the next greater multiple of 8 can be obtained as the product of 8 and (num + 7) / 8.
C++
Javascript
// CPP program to find smallest greater multiple// of 8 for a given number#include <bits/stdc++.h>using namespace std; // Returns next greater multiple of 8int RoundUp(int& x){    return ((x + 7) >> 3) << 3;} //Driver Codeint main(){    int x = 39;         //Function call    cout << RoundUp(x);    return 0;} //This code is contributed by phasing17
// JavaScript program to find smallest greater multiple// of 8 for a given number // Returns next greater multiple of 8function RoundUp(x){    return ((x + 7) >> 3) << 3;} // Driver Codelet x = 39;     // Function callconsole.log(RoundUp(x)); // This code is contributed by phasing17
40
Time Complexity: O(1) Auxiliary Space: O(1) 
SoumikMondal
Akanksha_Rai
prerna saini
suresh07
phasing17
Bitwise-AND
divisibility
Bit Magic
Technical Scripter
Bit Magic
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.