ví dụ:làm thế nào để không mỗi bit khi trong toán hạng thứ hai là 1?
1010111110110001
0101011100010010
================
1010100010100001
|0 1
-|----
0|0 1
1|0 0
cách thực hiện thao tác này trong C++/C++ 11?
ví dụ:làm thế nào để không mỗi bit khi trong toán hạng thứ hai là 1?
1010111110110001
0101011100010010
================
1010100010100001
|0 1
-|----
0|0 1
1|0 0
cách thực hiện thao tác này trong C++/C++ 11?
Bạn có thể làm một Bitwise NOT và sau đó VÀ họ: a & ~b
Given:
a = 1010111110110001
b = 0101011100010010
Sau đó, phủ nhận thành b
cho:
~b = 1010100011101101
và làm a & ~b
:
a = 1010111110110001
~b = 1010100011101101
-------------------------
a & ~b = 1010100010100001
đơn giản:
result = op1 & ~op2;
này sẽ đảo ngược Bitwise toán hạng thứ hai (1 trở thành 0 và ngược lại). Sau này, bạn sử dụng bitwise và. Điều này thường được gọi là sử dụng một bitmask.
Bạn sẽ có thể làm một phép toán AND với sự phủ định Bitwise:
result = val1 & ~val2;
Bạn muốn có một phép toán AND của những lời khen của các toán hạng thứ hai.
int fun(int x, int y)
{
return x & ~y;
}