Redondear al siguiente mayor múltiplo de 8

Dado un entero sin signo x. Redondee hacia arriba al siguiente múltiplo mayor de 8 usando solo operaciones bit a bit.
Ejemplos: 
 

Input : 35
Output : 40

Input : 64
Output : 64 (As 64 is already a multiple of 8. So, no modification is done.)

Solución 1: primero sumamos 7 y obtenemos un número x + 7, luego usamos la técnica para encontrar el siguiente múltiplo más pequeño de 8 para (x+7). Por ejemplo, si x = 12, sumamos 7 para obtener 19. Ahora encontramos el siguiente múltiplo más pequeño de 19, que es 16.
Solución 2: un enfoque eficiente para resolver este problema usando la operación AND bit a bit es: 
x = (x + 7 ) &(-8) 
Esto redondeará x al siguiente múltiplo mayor de 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>
Producción

40

Complejidad de tiempo: O(1) 
Complejidad de espacio: O(1)

Solución 3:

Un enfoque eficiente para resolver este problema es usar operadores de desplazamiento, ya que el siguiente mayor múltiplo de 8 se puede obtener como el producto de 8 y (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
Producción

40

Complejidad de Tiempo : O(1) 
Espacio Auxiliar : O(1)
 

Publicación traducida automáticamente

Artículo escrito por Shubham__Ranjan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *