यहां हम बिट ऑपरेटर्स का उपयोग करके जांचेंगे कि कोई संख्या धनात्मक, ऋणात्मक या शून्य है। यदि हम n >> 31 जैसी शिफ्टिंग करते हैं, तो यह प्रत्येक ऋणात्मक संख्या को -1 में बदल देगा, अन्य सभी संख्याओं को 0 में। यदि हम -n >> 31 करते हैं, तो धनात्मक संख्या के लिए यह -1 लौटाएगा। जब हम 0 के लिए करते हैं, तो n >> 31, और -n >> 31, दोनों 0 लौटाते हैं। इसके लिए हम नीचे दिए गए सूत्र का उपयोग करेंगे -
1 + (n >> 31) - (-n >> 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