Modificar un poco en una posición dada

Dado un número n , una posición p y un valor binario b , necesitamos cambiar el bit en la posición p en n al valor b.

Ejemplos: 

Input : n = 7, p = 2, b = 0
Output : 3
7 is 00000111 after clearing bit at 
2nd position, it becomes 0000011.

Input : n = 7, p = 3, b = 1
Output : 15
7 is 00000111 after setting bit at 
3rd position it becomes 00001111.
We first create a mask that has set bit only 
at given position using bit wise shift.
      mask = 1 << position

Then to change value of bit to b, we first
make it 0 using below operation
      value & ~mask

After changing it 0, we change it to b by
doing or of above expression with following
(b << p) & mask, i.e., we return
      ((n & ~mask) | (b << p))

A continuación se muestra la implementación de los pasos anteriores:  

C++

// CPP program to modify a bit at position
// p in n to b.
#include <bits/stdc++.h>
using namespace std;
 
// Returns modified n.
int modifyBit(int n, int p, int b)
{
    int mask = 1 << p;
    return ((n & ~mask) | (b << p));
}
 
// Driver code
int main()
{
    cout << modifyBit(6, 2, 0) << endl;
    cout << modifyBit(6, 5, 1) << endl;
    return 0;
}

C

// C program to modify a bit at position
// p in n to b.
#include <stdio.h>
 
// Returns modified n.
int modifyBit(int n, int p, int b)
{
    int mask = 1 << p;
    return ((n & ~mask) | (b << p));
}
 
// Driver code
int main()
{
    printf("%d\n",modifyBit(6, 2, 0));
    printf("%d\n",modifyBit(6, 5, 1));
    return 0;
}
 
// This code is contributed by kothvvsaakash.

Java

// Java program to modify a bit
// at position p in n to b.
import java.io.*;
 
class GFG
{
     
// Returns modified n.
public static int modifyBit(int n,
                            int p,
                            int b)
{
    int mask = 1 << p;
    return (n & ~mask) |
           ((b << p) & mask);
}
    // Driver Code
    public static void main (String[] args)
    {
        System.out.println(modifyBit(6, 2, 0));
        System.out.println (modifyBit(6, 5, 1));
    }
}
 
// This code is contributed by m_kit

Python3

# Python3 program to modify a bit at position
# p in n to b.
 
# Returns modified n.
def modifyBit( n,  p,  b):
    mask = 1 << p
    return (n & ~mask) | ((b << p) & mask)
  
# Driver code
def main():
    print(modifyBit(6, 2, 0))
    print(modifyBit(6, 5, 1))
     
if __name__ == '__main__':
    main()
# This code is contributed by PrinciRaj1992

C#

// C# program to modify a bit
// at position p in n to b.
using System;
 
class GFG
{
// Returns modified n.
public static int modifyBit(int n,
                            int p,
                            int b)
{
    int mask = 1 << p;
    return (n & ~mask) |
           ((b << p) & mask);
}
 
    // Driver Code
    static public void Main ()
    {
     
        Console.WriteLine(modifyBit(6, 2, 0));
        Console.WriteLine(modifyBit(6, 5, 1));
    }
}
 
// This code is contributed by ajit

PHP

<?php
// PHP program to modify a bit
// at position p in n to b.
 
// Returns modified n.
function modifyBit($n, $p, $b)
{
    $mask = 1 << $p;
    return ($n & ~$mask) |
           (($b << $p) & $mask);
}
 
    // Driver code
    echo modifyBit(6, 2, 0),"\n";
    echo modifyBit(6, 5, 1) ,"\n";
     
// This code is contributed by ajit
?>

Javascript

<script>
 
// Javascript program to modify a bit
// at position p in n to b.
 
// Returns modified n.
function modifyBit(n, p, b)
{
    let mask = 1 << p;
    return (n & ~mask) |
           ((b << p) & mask);
}
 
// Driver code
document.write(modifyBit(6, 2, 0) + "<br/>");
document.write(modifyBit(6, 5, 1));
 
// This code is contributed by susmitakundugoaldanga
 
</script>

Producción : 

 2
 38

Complejidad de tiempo : O(1)

Espacio Auxiliar : O(1)

Este artículo es una contribución de Pawan Asipu . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente. 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 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 *