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.
// 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 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 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# 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 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) ?> |
<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.
// 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 |
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. |
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 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 |
def roundUp(x):
# Returns next greater multiple of 8
return ((x + 7 ) >> 3 ) << 3
# Driver code x = 39
print (roundUp(x))
|
40
Time Complexity: O(1)
Auxiliary Space: O(1)