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