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