Round to next greater multiple of 8

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

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 8
int RoundUp(int& x)
{
    return ((x + 7) & (-8));
}
  
int main()
{
    int x = 39;
    cout << RoundUp(x);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to find smallest 
// greater multiple of 8 for 
// a given number 
import java.util.*;
import java.lang.*;
  
// Returns next greater 
// multiple of 8 
class 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)

chevron_right


Python 3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 program to find 
# smallest greater multiple 
# of 8 for a given number
  
# Returns next greater
# multiple of 8
def RoundUp(x):
    return ((x + 7) & (-8))
      
# Driver Code
x = 39
print(RoundUp(x))
  
# This code is contributed 
# by prerna saini

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to find smallest 
// greater multiple of 8 for 
// a given number 
using System; 
  
// Returns next greater 
// multiple of 8 
class 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

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP 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));
}
  
// Driver Code
$x = 39;
echo RoundUp($x);
  
// This code is contributed 
// by Akanksha Rai(Abby_akku)
?>

chevron_right


Output:

40

Time Complexity: O(1)
Space Complexity: O(1)



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.