Given a positive integer n. The problem is to check whether only the first and last bits are set in the binary representation of n.
Examples:
Input : 9 Output : Yes (9)10 = (1001)2, only the first and last bits are set. Input : 15 Output : No (15)10 = (1111)2, except first and last there are other bits also which are set.
Approach: Following are the steps:
- If n == 1, return “Yes”.
- Else check whether n-1 is a power of 2. Refer this post.
C++
// C++ to check whether the number has only // first and last bits set #include <bits/stdc++.h> using namespace std;
// function to check whether 'n' // is a power of 2 or not bool powerOfTwo(unsigned int n)
{ return (!(n & n-1));
} // function to check whether the number has only // first and last bits set bool onlyFirstAndLastAreSet(unsigned int n)
{ if (n == 1)
return true ;
if (n == 2)
return false ;
return powerOfTwo(n-1);
} // Driver program to test above int main()
{ unsigned int n = 9;
if (onlyFirstAndLastAreSet(n))
cout << "Yes" ;
else
cout << "No" ;
return 0;
} |
Java
// Java program to check whether the // number has only first and last // bits set import java.util.*;
class GFG
{ // function to check whether 'n'
// is a power of 2 or not
static boolean powerOfTwo( int n)
{
return ((n & n - 1 ) == 0 );
}
// function to check whether the number has
// only first and last bits set
static boolean onlyFirstAndLastAreSet( int n)
{
if (n == 1 )
return true ;
return powerOfTwo(n- 1 );
}
// Driver program to test above
public static void main (String[] args) {
int n = Integer.parseUnsignedInt( "9" );
if (onlyFirstAndLastAreSet(n))
System.out.println( "Yes" );
else
System.out.println( "No" );
}
} /* This code is contributed by Mr. Somesh Awasthi */ |
Python3
# Python3 program to check whether number # has only first and last bits set # function to check whether 'n' # is a power of 2 or not def powerOfTwo (n):
return ( not (n & n - 1 ))
# function to check whether number # has only first and last bits set def onlyFirstAndLastAreSet (n):
if (n = = 1 ):
return True
return powerOfTwo (n - 1 )
# Driver program to test above n = 9
if (onlyFirstAndLastAreSet (n)):
print ( 'Yes' )
else :
print ( 'No' )
# This code is contributed by Shariq Raza |
C#
// C# program to check whether the // number has only first and last // bits set using System;
class GFG {
// function to check whether 'n'
// is a power of 2 or not
static bool powerOfTwo( uint n)
{
return ((n & n - 1) == 0);
}
// function to check whether the number has
// only first and last bits set
static bool onlyFirstAndLastAreSet( uint n)
{
if (n == 1)
return true ;
return powerOfTwo(n - 1);
}
// Driver program to test above
public static void Main()
{
uint n = ( uint )9;
if (onlyFirstAndLastAreSet(n))
Console.WriteLine( "Yes" );
else
Console.WriteLine( "No" );
}
} // This code is contributed by Sam007 |
PHP
<?php // PHP to check whether the number // has only first and last bits set // function to check whether 'n' // is a power of 2 or not function powerOfTwo( $n )
{ return (!( $n & $n - 1));
} // function to check whether // the number has only first // and last bits set function onlyFirstAndLastAreSet( $n )
{ if ( $n == 1)
return true;
if ( $n == 2)
return false;
return powerOfTwo( $n - 1);
} // Driver Code $n = 9;
if (onlyFirstAndLastAreSet( $n ))
echo "Yes" ;
else echo "No" ;
// This code is contributed // by Sach_Code ?> |
Javascript
<script> // Javascript to check whether the number has only // first and last bits set // function to check whether 'n' // is a power of 2 or not function powerOfTwo(n)
{ return (!(n & n-1));
} // function to check whether the number has only // first and last bits set function onlyFirstAndLastAreSet(n)
{ if (n == 1)
return true ;
if (n == 2)
return false ;
return powerOfTwo(n-1);
} // Driver program to test above var n = 9;
if (onlyFirstAndLastAreSet(n))
document.write( "Yes" );
else document.write( "No" );
</script> |
Output:
Yes
Time Complexity – O(1)
Space Complexity – O(1)
Recommended Articles