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

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

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

**Output**

40

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