Ở đây chúng tôi sẽ kiểm tra xem một số là số dương, âm hay số 0 bằng cách sử dụng các toán tử bit. Nếu chúng ta thực hiện chuyển như n>> 31, thì nó sẽ chuyển mọi số âm thành -1, mọi số khác thành 0. Nếu chúng ta thực hiện –n>> 31, thì đối với số dương nó sẽ trả về -1. Khi chúng ta thực hiện với 0, rồi đến n>> 31 và –n>> 31, cả hai đều trả về 0. cho điều đó, chúng ta sẽ sử dụng một công thức khác như bên dưới -
1+ (𝑛>> 31) - (- 𝑛>> 31)
Vì vậy, bây giờ, nếu
- n âm:1 + (-1) - 0 =0
- n là số dương:1 + 0 - (-1) =2
- n là 0:1 + 0 - 0 =1
Ví dụ
#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); }
Đầu ra
50 is Positive -10 is negative 70 is Positive 0 is Zero