Ở đâ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