给定两个数字,请说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