Given a number you have to check whether there is pair of adjacent set bit or not.
Examples :
Input : N = 67 Output : Yes There is a pair of adjacent set bit The binary representation is 100011 Input : N = 5 Output : No
A simple solution is to traverse all bits. For every set bit, check if next bit is also set.
An efficient solution is to shift number by 1 and then do bitwise AND. If bitwise AND is non-zero then there are two adjacent set bits. Else not.
Try It Yourself
// CPP program to check
// if there are two
// adjacent set bits.
#include <iostream>
using namespace std;
bool adjacentSet(int n)
{
return (n & (n >> 1));
}
// Driver Code
int main()
{
int n = 3;
adjacentSet(n) ?
cout << "Yes" :
cout << "No";
return 0;
}
// Java program to check
// if there are two
// adjacent set bits.
class GFG
{
static boolean adjacentSet(int n)
{
int x = (n & (n >> 1));
if(x > 0)
return true;
else
return false;
}
// Driver code
public static void main(String args[])
{
int n = 3;
if(adjacentSet(n))
System.out.println("Yes");
else
System.out.println("No");
}
}
// This code is contributed by Sam007.
# Python 3 program to check if there
# are two adjacent set bits.
def adjacentSet(n):
return (n & (n >> 1))
# Driver Code
if __name__ == '__main__':
n = 3
if (adjacentSet(n)):
print("Yes")
else:
print("No")
# This code is contributed by
# Shashank_Sharma
// C# program to check
// if there are two
// adjacent set bits.
using System;
class GFG
{
static bool adjacentSet(int n)
{
int x = (n & (n >> 1));
if(x > 0)
return true;
else
return false;
}
// Driver code
public static void Main ()
{
int n = 3;
if(adjacentSet(n))
Console.WriteLine("Yes");
else
Console.WriteLine("No");
}
}
// This code is contributed by Sam007.
<?php
// PHP program to check
// if there are two
// adjacent set bits.
function adjacentSet($n)
{
return ($n & ($n >> 1));
}
// Driver Code
$n = 3;
adjacentSet($n) ?
print("Yes") :
print("No");
// This code is contributed by Sam007.
?>
<script>
// Javascript program to check
// if there are two
// adjacent set bits.
function adjacentSet(n)
{
let x = (n & (n >> 1));
if(x > 0)
return true;
else
return false;
}
// driver program
let n = 3;
if(adjacentSet(n))
document.write("Yes");
else
document.write("No");
</script>
Output :
Yes
Time Complexity : O(1)
Auxiliary Space : O(1)