Check if a number has two adjacent set bits

Last Updated : 15 Jul, 2022

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
redirect icon
C++
// 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
// 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.
Python3
# 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#
// 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
// 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.
?>
JavaScript
<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)
 


 

Comment