Open In App

Round to next greater multiple of 8

Last Updated : 12 Mar, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

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




// 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;
}


Java




// 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)


Python 3




# 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


C#




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


PHP




<?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)
?>


Javascript




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


Output

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




// 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) >> 3) << 3;
}
 
//Driver Code
int main()
{
    int x = 39;
     
    //Function call
    cout << RoundUp(x);
    return 0;
}
 
//This code is contributed by phasing17


Java




import java.util.*;
 
class Main {
  static int roundUp(int x)
  {
 
    // Returns next greater multiple of 8
    return ((x + 7) >> 3) << 3;
  }
 
  // Driver code
  public static void main(String[] args) {
    int x = 39;
    System.out.println(roundUp(x));
  }
}
 
// This code is contributed by vinayetbi1.


C#




using System;
 
class GFG {
  static int RoundUp(int x)
  {
    // Returns next greater multiple of 8
    return ((x + 7) >> 3) << 3;
  }
 
  // Driver code
  public static void Main(string[] args)
  {
    int x = 39;
    Console.WriteLine(RoundUp(x));
  }
}
 
// This code is contributed by phasing17.


Javascript




// 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) >> 3) << 3;
}
 
// Driver Code
let x = 39;
     
// Function call
console.log(RoundUp(x));
 
// This code is contributed by phasing17


Python3




def roundUp(x):
  # Returns next greater multiple of 8
  return ((x + 7) >> 3) << 3
 
# Driver code
x = 39
print(roundUp(x))


Output

40

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



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads