📌  相关文章
📜  使两个数字的二进制表示形式的长度相等后,对两个数字进行异或

📅  最后修改于: 2021-05-04 10:16:51             🧑  作者: Mango

给定两个数字,请说a和b。通过将尾随零添加到较小的二进制表示形式,使它们的二进制表示形式的长度相等后,打印它们的XOR。
例子 :

Input : a = 13, b = 5 
Output : 7
Explanation : Binary representation of 13 is 1101 and 
of 5 is 101. As the length of "101" is smaller,
so add a '0' to it making it "1010', to make 
the length of binary representations equal. 
XOR of 1010 and 1101 gives 0111 which is 7.

Input : a = 7, b = 5 
Output : 2
Explanation : Since the length of binary representations
of 7 i.e, 111 and 5 i.e, 101 are same, hence simply
print XOR of a and b.

方法:计算a和b中较小数字的二进制表示形式的位数。如果较小数(例如a)的位数超过了较大数(例如b),则对较小数应用左移数,即超出位数,即a = a <<(超出位数)。应用左移后,尾随零将被添加到较小数字的二进制表示形式的末尾,以使两个数字的二进制表示形式的位数相等。对两个二进制表示进行XOR运算以获得最终结果。
下面是上述方法的实现:

C++
// C++ implementation to return
// XOR of two numbers after making
// length of their binary representation same
#include 
using namespace std;
 
// function to count the number
// of bits in binary representation
// of an integer
int count(int n)
{
    // initialize count
    int c = 0;
     
    // count till n is non zero
    while (n)
    {
        c++;
         
        // right shift by 1
        // i.e, divide by 2
        n = n>>1;
    }
    return c;
}
 
// function to calculate the xor of
// two numbers by adding trailing
// zeros to the number having less number
// of bits in its binary representation.
int XOR(int a, int b)
{
    // stores the minimum and maximum
    int c = min(a,b);
    int d = max(a,b);
     
    // left shift if the number of bits
    // are less in binary representation
    if (count(c) < count(d))
       c = c << ( count(d) - count(c) );
     
    return (c^d);
}
 
// driver code to check the above function
int main()
{  
    int a = 13, b = 5;
    cout << XOR(a,b);   
    return 0;
}


Java
// Java implementation to return
// XOR of two numbers after making
// length of their binary representation same
import java.io.*;
 
class GFG {
     
    // function to count the number
    // of bits in binary representation
    // of an integer
    static int count(int n)
    {
        // initialize count
        int c = 0;
         
        // count till n is non zero
        while (n != 0)
        {
            c++;
             
            // right shift by 1
            // i.e, divide by 2
            n = n >> 1;
        }
        return c;
    }
     
    // function to calculate the xor of
    // two numbers by adding trailing
    // zeros to the number having less number
    // of bits in its binary representation.
    static int XOR(int a, int b)
    {
        // stores the minimum and maximum
        int c = Math.min(a, b);
        int d = Math.max(a, b);
         
        // left shift if the number of bits
        // are less in binary representation
        if (count(c) < count(d))
        c = c << ( count(d) - count(c) );
         
        return (c ^ d);
    }
     
    // driver code to check the above function
    public static void main(String args[])
    {
        int a = 13, b = 5;
        System.out.println(XOR(a, b));
    }
}
 
// This code is contributed by Nikita Tiwari.


Python3
# Python 3 implementation to return XOR
# of two numbers after making length
# of their binary representation same
 
# Function to count the number of bits
# in binary representation of an integer
def count(n) :
     
    # initialize count
    c = 0
     
    # count till n is non zero
    while (n != 0) :
        c += 1
         
        # right shift by 1
        # i.e, divide by 2
        n = n >> 1
         
    return c
     
# Function to calculate the xor of
# two numbers by adding trailing
# zeros to the number having less number
# of bits in its binary representation.
def XOR(a, b) :
     
    # stores the minimum and maximum
    c = min(a, b)
    d = max(a, b)
     
    # left shift if the number of bits
    # are less in binary representation
    if (count(c) < count(d)) :
        c = c << ( count(d) - count(c) )
     
    return (c^d)
 
# Driver Code
a = 13; b = 5
print(XOR(a, b))
 
 
# This code is contributed by Nikita Tiwari.


C#
// C# implementation to return XOR of two
// numbers after making length of their
// binary representation same
using System;
 
class GFG {
     
    // function to count the number
    // of bits in binary representation
    // of an integer
    static int count(int n)
    {
         
        // initialize count
        int c = 0;
         
        // count till n is non zero
        while (n != 0)
        {
             
            c++;
             
            // right shift by 1
            // i.e, divide by 2
            n = n >> 1;
        }
         
        return c;
    }
     
    // function to calculate the xor of
    // two numbers by adding trailing
    // zeros to the number having less number
    // of bits in its binary representation.
    static int XOR(int a, int b)
    {
         
        // stores the minimum and maximum
        int c = Math.Min(a, b);
        int d = Math.Max(a, b);
         
        // left shift if the number of bits
        // are less in binary representation
        if (count(c) < count(d))
        c = c << ( count(d) - count(c) );
         
        return (c ^ d);
    }
     
    // driver code to check the above function
    public static void Main()
    {
        int a = 13, b = 5;
         
        Console.WriteLine(XOR(a, b));
    }
}
 
// This code is contributed by vt_m.


PHP
>1;
    }
    return $c;
}
 
// function to calculate the xor of
// two numbers by adding trailing
// zeros to the number having less number
// of bits in its binary representation.
function XOR1($a, $b)
{
     
    // stores the minimum
    // and maximum
    $c = min($a,$b);
    $d = max($a,$b);
     
    // left shift if the number of bits
    // are less in binary representation
    if (count1($c) < count1($d))
    $c = $c << ( count1($d) - count1($c) );
     
    return ($c^$d);
}
 
    // Driver Code
    $a = 13;
    $b = 5;
    echo XOR1($a, $b);
 
// This code is contributed by mits
?>


Javascript


输出 :

7