Open In App

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

Last Updated : 06 Feb, 2023
Comments
Improve
Suggest changes
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)
 


Next Article
Practice Tags :

Similar Reads