यहां हम बिट ऑपरेटरों का उपयोग करके जांच करेंगे कि कोई संख्या सकारात्मक है, या नकारात्मक या शून्य है। अगर हम n>> 31 की तरह शिफ्टिंग करते हैं, तो यह हर नेगेटिव नंबर को -1 में, हर दूसरे नंबर को 0 में बदल देगा। अगर हम -n>> 31 करते हैं, तो पॉजिटिव नंबर के लिए यह -1 वापस आ जाएगा। जब हम 0 के लिए करते हैं, तो n>> 31, और –n>> 31, दोनों 0 लौटाते हैं। उसके लिए हम नीचे दिए गए दूसरे सूत्र का उपयोग करेंगे -
1+(𝑛>>31)−(−𝑛>>31)
तो अब, अगर
- n ऋणात्मक है:1 + (-1) - 0 =0
- n धनात्मक है:1 + 0 - (-1) =2
- n 0 है:1 + 0 - 0 =1
उदाहरण
#include <iostream>
#include <cmath>
using namespace std;
int checkNumber(int n){
return 1+(n >> 31) - (-n >> 31);
}
int printNumberType(int n){
int res = checkNumber(n);
if(res == 0)
cout << n << " is negative"<< endl;
else if(res == 1)
cout << n << " is Zero" << endl;
else if(res == 2)
cout << n << " is Positive" << endl;
}
int main() {
printNumberType(50);
printNumberType(-10);
printNumberType(70);
printNumberType(0);
} आउटपुट
50 is Positive -10 is negative 70 is Positive 0 is Zero