Cuente el número de bits cambiados después de agregar 1 a N dado

Dado un número entero  N  . 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

Deja una respuesta

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