Open In App

Check if a number is positive, negative or zero using bit operators

Last Updated : 06 Feb, 2023
Suggest changes
Share
Like Article
Like
Report

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

Practice Tags :