Computer >> Máy Tính >  >> Lập trình >> C ++

Kiểm tra xem một số là số dương, số âm hay số 0 bằng cách sử dụng toán tử bit trong C ++

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