Check if a number has two adjacent set bits

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. 
 

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)
 

This article is contributed by Pranav. If you like zambiatek and would like to contribute, you can also write an article using write.zambiatek.com or mail your article to review-team@zambiatek.com. See your article appearing on the zambiatek main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
 

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Check Also
Close
Back to top button