Рубрики

Подсчитать количество бит, которое нужно перевернуть, чтобы преобразовать A в B

Даны два числа «а» и б ». Напишите программу для подсчета количества битов, которое необходимо перевернуть для преобразования «a» в «b».

Пример :

Input : a = 10, b = 20
Output : 4
Binary representation of a is 00001010
Binary representation of b is 00010100
We need to flip highlighted four bits in a
to make it b.

Input : a = 7, b = 10
Output : 3
Binary representation of a is 00000111
Binary representation of b is 00001010
We need to flip highlighted three bits in a
to make it b.
  1. Calculate XOR of A and B.      
        a_xor_b = A ^ B
  2. Count the set bits in the above 
     calculated XOR result.
        countSetBits(a_xor_b)

XOR с двумя числами будет устанавливать биты только в тех местах, где A отличается от B.

C ++

// Подсчитать количество битов, которые нужно перевернуть
// конвертировать A в B
#include <iostream>

using namespace std;

  
// Функция, которая считает установленные биты

int countSetBits(int n)

{

    int count = 0;

    while (n)

    {

        count += n & 1;

        n >>= 1;

    }

    return count;

}

  
// Функция, которая возвращает количество
// перевернутый номер

int FlippedCount(int a, int b)

{

    // Возвращаем количество установленных бит в

    // a XOR b

    return countSetBits(a^b);

}

  
// Код драйвера

int main()

{

    int a = 10;

    int b = 20;

    cout << FlippedCount(a, b)<<endl;

    return 0;

}

Джава

// Подсчитать количество битов, которые нужно перевернуть
// конвертировать A в B

import java.util.*;

  

class Count {

      

    // Функция, которая считает установленные биты

    public static int countSetBits(int n)

    {

        int count = 0;

        while (n != 0) {

            count += n & 1;

            n >>= 1;

        }

        return count;

    }

  

    // Функция, которая возвращает количество

    // перевернутый номер

    public static int FlippedCount(int a, int b)

    {

        // Возвращаем количество установленных бит в

        // a XOR b

        return countSetBits(a ^ b);

    }

      

    // Код драйвера

    public static void main(String[] args)

    {

        int a = 10;

        int b = 20;

        System.out.print(FlippedCount(a, b));

    }

}

  
// Этот код предоставлен rishabh_jain

python3

# Подсчитать количество бит, которые нужно перевернуть
# конвертировать А в Б

  
# Функция, которая считает установленные биты

def countSetBits( n ):

    count = 0

    while n:

        count += n & 1

        n >>= 1

    return count

      
# Функция, которая возвращает количество
# перевернутый номер

def FlippedCount(a , b):

  

    # Возвращает количество установленных бит в

    # a XOR b

    return countSetBits(a^b)

  
# Код драйвера

a = 10

b = 20

print(FlippedCount(a, b))

  
# Этот код предоставлен "Sharad_Bhardwaj".

C #

// Подсчитать количество битов
// перевернул, чтобы преобразовать A в B

using System;

  

class Count {

      

    // Функция, которая считает установленные биты

    public static int countSetBits(int n)

    {

        int count = 0;

        while (n != 0) {

            count += n & 1;

            n >>= 1;

        }

        return count;

    }

  

    // Функция, которая возвращает

    // количество перевернутых чисел

    public static int FlippedCount(int a, int b)

    {

    // Возвращаем счетчик множества

    // биты в XOR b

        return countSetBits(a ^ b);

    }

      

    // Код драйвера

    public static void Main()

    {

        int a = 10;

        int b = 20;

        Console.WriteLine(FlippedCount(a, b));

    }

}

  
// Этот код предоставлен vt_m.

PHP

<?php
// Подсчитать количество битов
// перевернул, чтобы преобразовать A в B

  
// Функция, которая считает установленные биты

function countSetBits($n)

{

    $count = 0;

    while($n)

    {

        $count += $n & 1;

        $n >>= 1;

    }

    return $count;

}

      
// Функция, которая возвращает
// количество перевернутых чисел

function FlippedCount($a, $b)

{

    // Возвращаем счетчик множества

    // биты в XOR b

    return countSetBits($a ^ $b);

}

  
// Код драйвера

$a = 10;

$b = 20;

echo FlippedCount($a, $b);

  
// Этот код предоставлен mits
?>


Выход :

4

Спасибо Сахилу Раджпуту за предоставленную реализацию.

Чтобы узнать количество битов, смотрите этот пост: Количество битов в целых числах

Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Подсчитать количество бит, которое нужно перевернуть, чтобы преобразовать A в B

0.00 (0%) 0 votes