Check if a number is positive, negative or zero using bit operators
Last Updated :
06 Feb, 2023
Given a number N, check if it is positive, negative or zero without using conditional statements.
Examples:
Input : 30
Output : 30 is positive
Input : -20
Output : -20 is negative
Input: 0
Output: 0 is zero
The signed shift n>>31 converts every negative number into -1 and every other into 0.
When we do a -n>>31, if it is a positive number then it will return -1 as we are doing -n>>31 and the vice versa when we do for a negative number.
But when we do for 0 then n>>31 and -n>>31 both returns 0, so we get a formula:
1 + (n>>31) - (-n>>31)
..1) when n is negative :
1 +(-1)-0=0
..2) when n is positive:
1+0-(-1)=2
..3) when n is 0:
1+0-0=1
So we know it returns 0 when it is a negative number, it returns 1 when it is zero, returns 2 when it is a positive number.
So to not use if statements we store at 0th index "negative", 1st index "zero" and at 2nd index "positive", and print according to it.
CPP
// CPP program to find if a number is
// positive, negative or zero using
// bit wise operators.
#include <iostream>
using namespace std;
// function to return 1 if it is zero
// returns 0 if it is negative
// returns 2 if it is positive
int index(int i)
{
return 1 + (i >> 31) - (-i >> 31);
}
void check(int n)
{
// string array to store all kinds of number
string s[] = { "negative", "zero", "positive" };
// function call to check the sign of number
int val = index(n);
cout << n << " is " << s[val] << endl;
}
// driver program to test the above function
int main()
{
check(30);
check(-20);
check(0);
return 0;
}
Java
// Java program to find if a number is
// positive, negative or zero using
// bit wise operators.
class GFG {
// function to return 1 if it is zero
// returns 0 if it is negative
// returns 2 if it is positive
static int index(int i)
{
return 1 + (i >> 31) - (-i >> 31);
}
static void check(int n)
{
// string array to store all kinds
// of number
String s[] = { "negative", "zero",
"positive" };
// function call to check the sign
// of number
int val = index(n);
System.out.println(n + " is " + s[val]);
}
// Driver code
public static void main(String[] args)
{
check(30);
check(-20);
check(0);
}
}
// This code is contributed by Anant Agarwal.
Python3
# Python 3 program to
# find if a number is
# positive, negative
# or zero using
# bit wise operators.
# function to return 1 if it is zero
# returns 0 if it is negative
# returns 2 if it is positive
def index(i):
return 1 + (i >> 31) - (-i >> 31)
def check(n):
# string array to store all kinds of number
s = "negative", "zero", "positive"
# function call to check the sign of number
val = index(n)
print(n,"is",s[val])
# driver program to
# test the above function
check(30)
check(-20)
check(0)
# This code is contributed by
# Smitha Dinesh Semwal
C#
// C# program to find if a number is
// positive, negative or zero using
// bit wise operators.
using System;
class GFG {
// function to return 1 if it is zero
// returns 0 if it is negative
// returns 2 if it is positive
static int index(int i)
{
return 1 + (i >> 31) - (-i >> 31);
}
static void check(int n)
{
// string array to store all kinds of number
String []s = { "negative", "zero", "positive" };
// function call to check the sign of number
int val = index(n);
Console.WriteLine(n + " is " + s[val]);
}
//Driver code
public static void Main()
{
check(30);
check(-20);
check(0);
}
}
// This code is contributed by Anant Agarwal.
PHP
<?php
// PHP program to find if a number is
// positive, negative or zero using
// bit wise operators.
// function to return 1 if it is zero
// returns 0 if it is negative
// returns 2 if it is positive
function index($i)
{
return 1 + ($i >> 31) -
(-$i >> 31);
}
function check($n)
{
// string array to store
// all kinds of number
$s = array("negative", "zero", "positive" );
// function call to check
// the sign of number
$val = index($n);
echo $n, " is ", $s[$val], "\n";
}
// Driver Code
check(30);
check(-20);
check(0);
// This code is contributed by Ajit
?>
JavaScript
// JavaScript program to find if a number is positive, negative or zero
// function to return 1 if it is zero, 0 if it is negative, and 2 if it is positive
function index(i) {
return 1 + (i >> 31) - (-i >> 31);
}
function check(n) {
// string array to store all kinds of number
let s = ["negative", "zero", "positive"];
// function call to check the sign of number
let val = index(n);
console.log(`${n} is ${s[val]}`);
}
// driver program to test the above function
check(30);
check(-20);
check(0);
Output:
30 is positive
-20 is negative
0 is zero
Time Complexity : O(1)
Space Complexity : O(1)
Similar Reads
Program to check if a number is Positive, Negative, Odd, Even, Zero Given a number n, the task is to check whether the given number is positive, negative, odd, even, or zero. Method 1 : A number is positive if it is greater than zero. We check this in the expression of if.If it is False, the number will either be zero or negative.This is also tested in subsequent ex
15 min read
Check if a number is multiple of 9 using bitwise operators Given a number n, write a function that returns true if n is divisible by 9, else false. The most simple way to check for n's divisibility by 9 is to do n%9. Another method is to sum the digits of n. If sum of digits is multiple of 9, then n is multiple of 9. The above methods are not bitwise operat
5 min read
Check if a Number is Odd or Even using Bitwise Operators Given a number n, the task is to check whether the number is even or odd using Bitwise Operators.Examples: Input: n = 11 Output: OddInput: n = 10 Output: Even Following Bitwise Operators can be used to check if a number is odd or even:1. Using Bitwise XOR operator: The idea is to check whether the l
6 min read
Check if a number is divisible by 8 using bitwise operators Given a number n, check if it is divisible by 8 using bitwise operators. Examples: Input : 16 Output :YES Input :15 Output :NO Recommended PracticeCheck if a number is divisible by 8Try It! Approach: Result = (((n >> 3) << 3) == n). First we shift the 3 bit right then we shift the 3 bit
3 min read
Check if a number is divisible by 17 using bitwise operators Given a number n, check if it is divisible by 17 using bitwise operators. Examples: Input : n = 34 Output : 34 is divisible by 17 Input : n = 43 Output : 43 is not divisible by 17 A naive approach will be to check it by % operator if it leaves a remainder of 0.To do division using Bitwise operators,
6 min read