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 GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks 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.
Please Login to comment...