Dado un número entero . La tarea es encontrar el número de bits cambiados después de sumar 1 al número dado.
Ejemplos :
Input : N = 5 Output : 2 After adding 1 to 5 it becomes 6. Binary representation of 5 is 101. Binary representation of 6 is 110. So, no. of bits changed is 2. Input : N = 1 Output : 2
Hay tres enfoques para encontrar el número de bits modificados en el resultado obtenido después de sumar 1 al valor dado N:
- Enfoque 1: agregue 1 al entero dado y compare los bits de N y el resultado obtenido después de la suma y cuente el número de bits no coincidentes.
- Enfoque 2: en caso de que se agregue 1 a N, el número total de bits cambiados se define por la posición del primer cero desde la derecha, es decir, LSB como cero. En este caso, 1 se agrega a 1, luego se cambia y pasa un acarreo 1 a su siguiente bit, pero si se agrega 1 a 0, solo 0 cambia a 1 y no se pasa más acarreo.
- Método 3: para encontrar una cantidad de bits cambiados cuando se agrega 1 a un número dado, tome XOR de n y n+1 y calcule la cantidad de bits establecidos en el valor XOR resultante.
A continuación se muestra la implementación del Enfoque 3 :
C++
// CPP program to find the number // of changed bit #include <bits/stdc++.h> using namespace std; // Function to find number of changed bit int findChangedBit(int n) { // Calculate xor of n and n+1 int XOR = n ^ (n + 1); // Count set bits in xor value int result = __builtin_popcount(XOR); // Return the result return result; } // Driver function int main() { int n = 6; cout << findChangedBit(n) << endl; n = 7; cout << findChangedBit(n); return 0; }
Java
// Java program to find the number // of changed bit class GFG { // Function to find number of changed bit static int findChangedBit(int n) { // Calculate xor of n and n+1 int XOR = n ^ (n + 1); // Count set bits in xor value int result = Integer.bitCount(XOR); // Return the result return result; } // Driver code public static void main(String[] args) { int n = 6; System.out.println(findChangedBit(n)); n = 7; System.out.println(findChangedBit(n)); } } // This code contributed by Rajput-Ji
Python3
# Python 3 program to find the number # of changed bit # Function to find number of changed bit def findChangedBit(n): # Calculate xor of n and n+1 XOR = n ^ (n + 1) # Count set bits in xor value result = bin(XOR).count("1") # Return the result return result # Driver Code if __name__ == '__main__': n = 6 print(findChangedBit(n)) n = 7 print(findChangedBit(n)) # This code is contributed by # Surendra_Gangwar
C#
// C# program to find the number // of changed bit using System; class GFG { // Function to find number of changed bit static int findChangedBit(int n) { // Calculate xor of n and n+1 int XOR = n ^ (n + 1); // Count set bits in xor value int result = bitCount(XOR); // Return the result return result; } static int bitCount(int x) { // To store the count // of set bits int setBits = 0; while (x != 0) { x = x & (x - 1); setBits++; } return setBits; } // Driver code public static void Main(String[] args) { int n = 6; Console.WriteLine(findChangedBit(n)); n = 7; Console.WriteLine(findChangedBit(n)); } } /* This code contributed by PrinciRaj1992 */
Javascript
<script> // Javascript program to find the number // of changed bit // Function to find number of changed bit function findChangedBit(n) { // Calculate xor of n and n+1 let XOR = n ^ (n + 1); // Count set bits in xor value let result = bitCount(XOR); // Return the result return result; } function bitCount(x) { // To store the count // of set bits let setBits = 0; while (x != 0) { x = x & (x - 1); setBits++; } return setBits; } // Driver function let n = 6; document.write(findChangedBit(n) + "<br>"); n = 7; document.write(findChangedBit(n)); </script>
Producción:
1 4
Publicación traducida automáticamente
Artículo escrito por Shivam.Pradhan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA