Check whether the number has only first and last bits set
Last Updated :
21 Jun, 2022
Improve
Try it on GfG Practice
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++ 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 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 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# 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 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
?>
<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)