本文概述
- C ++
- Java
- Python 3
- C#
- 的PHP
这些比特位从右到左编号, 即, 最低有效比特wei被认为在第一位置。
例子:
Input: a = 10, b = 5
l = 1, r = 3
Output: Yes
(10)10 = (1010)2
(5)10 = (101)2 = (0101)2
All the bits in the range 1 to 3 are complement of each other.Input: a = 21, b = 13
l = 2, r = 4
Output: No
(21)10 = (10101)2
(13)10 = (1101)2 = (1101)2
All the bits in the range 2 to 4 are not complement of each other.
方法:以下是解决问题的步骤
- 计算异或值= a ^ b。
- 检查所有位是否都设置在范围内升to[Rin异或值。参考这个发布。
C ++
//C++ implementation to check
//whether all the bits in the given range
//of two numbers are complement of each other
#include <
bits/stdc++.h>
using namespace std;
//function to check whether all the bits
//are set in the given range or not
bool allBitsSetInTheGivenRange(unsigned int n, unsigned int l, unsigned int r)
{
//calculating a number 'num' having 'r'
//number of bits and bits in the range l
//to r are the only set bits
int num = ((1 <
<
r) - 1) ^ ((1 <
<
(l - 1)) - 1);
//new number which will only have one or more
//set bits in the range l to r and nowhere else
int new_num = n &
num;
//if both are equal, then all bits are set
//in the given range
if (num == new_num)
return true ;
//else all bits are not set
return false ;
}//function to check whether all the bits in the given range
//of two numbers are complement of each other
bool bitsAreComplement(unsigned int a, unsigned int b, unsigned int l, unsigned int r)
{
unsigned int xor_value = https://www.lsbin.com/a ^ b;
return allBitsSetInTheGivenRange(xor_value, l, r);
}//Driver Code
int main()
{
unsigned int a = 10, b = 5;
unsigned int l = 1, r = 3;
if (bitsAreComplement(a, b, l, r))
cout <
<"Yes" ;
else
cout <
<
"No" ;
return 0;
}
Java
//Java implementation to check
//whether all the bits in the
//given range of two numbers
//are complement of each other
class GFG
{
//function to check whether
//all the bits are set in
//the given range or not
static boolean allBitsSetInTheGivenRange( int n, int l, int r)
{
//calculating a number 'num'
//having 'r' number of bits
//and bits in the range l
//to r are the only set bits
int num = (( 1 <
<
r) - 1 ) ^
(( 1 <
<
(l - 1 )) - 1 );
//new number which will only
//have one or more set bits
//in the range l to r and
//nowhere else
int new_num = n &
num;
//if both are equal, //then all bits are set
//in the given range
if (num == new_num)
return true ;
//else all bits are not set
return false ;
}//function to check whether all
//the bits in the given range
//of two numbers are complement
//of each other
static boolean bitsAreComplement( int a, int b, int l, int r)
{
int xor_value = https://www.lsbin.com/a ^ b;
return allBitsSetInTheGivenRange(xor_value, l, r);
}//Driver Code
public static void main(String []args)
{
int a = 10 , b = 5 ;
int l = 1 , r = 3 ;
if (bitsAreComplement(a, b, l, r))
System.out.println("Yes" );
else
System.out.println( "No" );
}
}//This code is contributed by Smitha
Python 3
# Python 3 implementation to check whether
# all the bits in the given range of two
# numbers are complement of each other# function to check whether all the bits
# are set in the given range or not
def allBitsSetInTheGivenRange(n, l, r):# calculating a number 'num' having 'r'
# number of bits and bits in the range l
# to r are the only set bits
num = (( 1 <
<
r) - 1 ) ^ (( 1 <
<
(l - 1 )) - 1 )# new number which will only have one
# or more set bits in the range l to r
# and nowhere else
new_num = n &
num# if both are equal, then all bits
# are set in the given range
if (num = = new_num):
return True# else all bits are not set
return False# function to check whether all the bits
# in the given range of two numbers are
# complement of each other
def bitsAreComplement(a, b, l, r):
xor_value = https://www.lsbin.com/a ^ b
return allBitsSetInTheGivenRange(xor_value, l, r)# Driver Code
if __name__ = ="__main__" :a = 10
b = 5
l = 1
r = 3if (bitsAreComplement(a, b, l, r)):
print ( "Yes" )
else :
print ( "No" )# This code is contributed by ita_c
C#
//C# implementation to check
//whether all the bits in the
//given range of two numbers
//are complement of each other
using System;
class GFG
{
//function to check whether
//all the bits are set in
//the given range or not
static bool allBitsSetInTheGivenRange( int n, int l, int r)
{
//calculating a number 'num'
//having 'r' number of bits
//and bits in the range l
//to r are the only set bits
int num = ((1 <
<
r) - 1) ^
((1 <
<
(l - 1)) - 1);
//new number which will only
//have one or more set bits
//in the range l to r and
//nowhere else
int new_num = n &
num;
//if both are equal, //then all bits are set
//in the given range
if (num == new_num)
return true ;
//else all bits are not set
return false ;
} //function to check whether all
//the bits in the given range
//of two numbers are complement
//of each other
static bool bitsAreComplement( int a, int b, int l, int r)
{
int xor_value = https://www.lsbin.com/a ^ b;
return allBitsSetInTheGivenRange(xor_value, l, r);
} //Driver Code
static public void Main ()
{
int a = 10, b = 5;
int l = 1, r = 3;
if (bitsAreComplement(a, b, l, r))
Console.WriteLine("Yes" );
else
Console.WriteLine( "No" );
}
} //This code is contributed
//by Ajit Deshpal.
的PHP
<
?php
//PHP implementation to check
//whether all the bits in the
//given range of two numbers
//are complement of each other //function to check whether
//all the bits are set in
//the given range or not
function allBitsSetInTheGivenRange( $n , $l , $r )
{ //calculating a number
//'num' having 'r' number
//of bits and bits in
//the range l to r are
//the only set bits
$num = ((1 <
<
$r ) - 1) ^
((1 <
<
( $l - 1)) - 1);
//new number which will
//only have one or more
//set bits in the range
//l to r and nowhere else
$new_num = ( $n &
$num );
//if both are equal, //then all bits are set
//in the given range
if ( $num == $new_num )
return true;
//else all bits
//are not set
return false;
} //function to check whether
//all the bits in the given range
//of two numbers are complement
//of each other
function bitsAreComplement( $a , $b , $l , $r )
{
$xor_value = https://www.lsbin.com/$a ^ $b ;
return allBitsSetInTheGivenRange( $xor_value , $l , $r );
} //Driver Code
$a = 10;
$b = 5;
$l = 1;
$r = 3;
if (bitsAreComplement( $a , $b , $l , $r ))
echo"Yes" ;
else
echo "No" ;
//This Code is Contributed by ajit
?>
【检查两个数字从L到R的位是否彼此互补】输出如下:
Yes
推荐阅读
- 如何在D3.js中应用动画()
- 适配器模式 在Android中的简单理解
- Android屏幕信息获取
- Android应用开发中三种常见的图片压缩方法
- Android 高清加载巨图方案 拒绝压缩图片
- Android入门——Bitmap和BitmapFactory
- android WebView详解,常见漏洞详解和安全源码(下)
- Android硬件加速介绍与实现
- 如何在mac本上安装android sdk