计算要翻转以将A转换为B的位数

给定两个数字“a”和“b”。编写一个程序,计算将“a”转换为“b”需要翻转的位数。 例子:

null
Input : a = 10, b = 20Output : 4Binary representation of a is 00001010Binary representation of b is 00010100We need to flip highlighted four bits in ato make it b.Input : a = 7, b = 10Output : 3Binary representation of a is 00000111Binary representation of b is 00001010We need to flip highlighted three bits in ato 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)

两个数的异或只有在A和B不同的地方才有设定位。

C++

// Count number of bits to be flipped
// to convert A into B
#include <iostream>
using namespace std;
// Function that count set bits
int countSetBits( int n)
{
int count = 0;
while (n > 0)
{
count++;
n &= (n-1);
}
return count;
}
// Function that return count of
// flipped number
int FlippedCount( int a, int b)
{
// Return count of set bits in
// a XOR b
return countSetBits(a^b);
}
// Driver code
int main()
{
int a = 10;
int b = 20;
cout << FlippedCount(a, b)<<endl;
return 0;
}


JAVA

// Count number of bits to be flipped
// to convert A into B
import java.util.*;
class Count {
// Function that count set bits
public static int countSetBits( int n)
{
int count = 0 ;
while (n != 0 ) {
count++;
n &=(n- 1 );
}
return count;
}
// Function that return count of
// flipped number
public static int FlippedCount( int a, int b)
{
// Return count of set bits in
// a XOR b
return countSetBits(a ^ b);
}
// Driver code
public static void main(String[] args)
{
int a = 10 ;
int b = 20 ;
System.out.print(FlippedCount(a, b));
}
}
// This code is contributed by rishabh_jain


Python3

# Count number of bits to be flipped
# to convert A into B
# Function that count set bits
def countSetBits( n ):
count = 0
while n:
count + = 1
n & = (n - 1 )
return count
# Function that return count of
# flipped number
def FlippedCount(a , b):
# Return count of set bits in
# a XOR b
return countSetBits(a^b)
# Driver code
a = 10
b = 20
print (FlippedCount(a, b))
# This code is contributed by "Sharad_Bhardwaj".


C#

// Count number of bits to be
// flipped to convert A into B
using System;
class Count {
// Function that count set bits
public static int countSetBits( int n)
{
int count = 0;
while (n != 0) {
count++;
n &= (n-1);
}
return count;
}
// Function that return
// count of flipped number
public static int FlippedCount( int a, int b)
{
// Return count of set
// bits in a XOR b
return countSetBits(a ^ b);
}
// Driver code
public static void Main()
{
int a = 10;
int b = 20;
Console.WriteLine(FlippedCount(a, b));
}
}
// This code is contributed by vt_m.


PHP

<?php
// Count number of bits to be
// flipped to convert A into B
// Function that count set bits
function countSetBits( $n )
{
$count = 0;
while ( $n )
{
$count += 1;
$n &= (n-1);
}
return $count ;
}
// Function that return
// count of flipped number
function FlippedCount( $a , $b )
{
// Return count of set
// bits in a XOR b
return countSetBits( $a ^ $b );
}
// Driver code
$a = 10;
$b = 20;
echo FlippedCount( $a , $b );
// This code is contributed by mits
?>


Javascript

<script>
// Count number of bits to be flipped
// to convert A into Bclass Count {
// Function that count set bits
function countSetBits(n) {
var count = 0;
while (n != 0) {
count++;
n &= (n - 1);
}
return count;
}
// Function that return count of
// flipped number
function FlippedCount(a , b) {
// Return count of set bits in
// a XOR b
return countSetBits(a ^ b);
}
// Driver code
var a = 10;
var b = 20;
document.write(FlippedCount(a, b));
// This code is contributed by shikhasingrajput
</script>


输出

4

另一种方法:

C++

// C++ program
#include <iostream>
using namespace std;
int countFlips( int a, int b)
{
// initially flips is equal to 0
int flips = 0;
// & each bits of a && b with 1
// and store them if t1 and t2
// if t1 != t2 then we will flip that bit
while (a > 0 || b > 0){
int t1 = (a&1);
int t2 = (b&1);
if (t1!=t2){
flips++;
}
// right shifting a and b
a>>=1;
b>>=1;
}
return flips;
}
int main () {
int a = 10;
int b = 20;
cout <<countFlips(a, b);
}
// this code is contributed by shivanisinghss2110


JAVA

/*package whatever //do not write package name here */
// CONTRIBUTED BY PRAVEEN VISHWAKARMA
import java.io.*;
class GFG {
public static int countFlips( int a, int b){
// initially flips is equal to 0
int flips = 0 ;
// & each bits of a && b with 1
// and store them if t1 and t2
// if t1 != t2 then we will flip that bit
while (a> 0 || b> 0 ){
int t1 = (a& 1 );
int t2 = (b& 1 );
if (t1!=t2){
flips++;
}
// right shifting a and b
a>>>= 1 ;
b>>>= 1 ;
}
return flips;
}
public static void main (String[] args) {
int a = 10 ;
int b = 20 ;
System.out.println(countFlips(a, b));
}
}


Python3

def countFlips(a, b):
# initially flips is equal to 0
flips = 0
# & each bits of a && b with 1
# and store them if t1 and t2
# if t1 != t2 then we will flip that bit
while (a > 0 or b > 0 ):
t1 = (a & 1 )
t2 = (b & 1 )
if (t1 ! = t2):
flips + = 1
# right shifting a and b
a>> = 1
b>> = 1
return flips
a = 10
b = 20
print (countFlips(a, b))
# This code is contributed by shivanisinghss2110


C#

/*package whatever //do not write package name here */
using System;
class GFG {
public static int countFlips( int a, int b)
{
// initially flips is equal to 0
int flips = 0;
// & each bits of a && b with 1
// and store them if t1 and t2
// if t1 != t2 then we will flip that bit
while (a > 0 || b > 0){
int t1 = (a&1);
int t2 = (b&1);
if (t1 != t2){
flips++;
}
// right shifting a and b
a>>=1;
b>>=1;
}
return flips;
}
// Driver code
public static void Main (String[] args) {
int a = 10;
int b = 20;
Console.Write(countFlips(a, b));
}
}
// This code is contributed by shivanisinghss2110


Javascript

<script>
/*package whatever //do not write package name here */
function countFlips(a, b){
// initially flips is equal to 0
var flips = 0;
// & each bits of a && b with 1
// and store them if t1 and t2
// if t1 != t2 then we will flip that bit
while (a>0 || b>0){
var t1 = (a&1);
var t2 = (b&1);
if (t1!=t2){
flips++;
}
// right shifting a and b
a>>>=1;
b>>>=1;
}
return flips;
}
var a = 10;
var b = 20;
document.write(countFlips(a, b));
// This code is contributed by shivanisinghss2110
</script>


输出

4

幸亏 萨希尔·拉吉普特 用于提供上述实现。

要获取设置的位计数,请参阅以下帖子: 在整数中计算集合位 如果你喜欢Geeksforgek,并且想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享