Tôi đã cố gắng hiểu cách điều kiện hoạt động với các toán tử bitwise. Một cách để kiểm tra xem một số là chẵn hoặc lẻ có thể được thực hiện bằng cách:Báo cáo điều kiện hoạt động như thế nào với các nhà khai thác bit-khôn ngoan?
#include <iostream>
#include <string>
using namespace std;
string test()
{
int i = 8; //a number
if(i & 1)
return "odd";
else
return "even";
}
int main()
{
cout << test();
return 0;
}
Các Phần I không hiểu là như thế nào nếu việc điều kiện. Trong trường hợp này nếu i = 8 thì câu lệnh If trong đó đang thực hiện 1000 & 1
sẽ trả lại 1000 bằng 8.
Nếu i = 7, thì nếu cần thì hãy làm 111 & 1
cho số 111 bằng 7
Tại sao trường hợp nếu (8) trả về "ngay cả" và nếu (7) trả về "lẻ"? Tôi đoán tôi muốn hiểu những gì nếu tuyên bố được kiểm tra là đúng và những gì là sai khi đối phó với các nhà khai thác bit-khôn ngoan.
Just A nghĩ khi tôi viết câu hỏi này xuống là nó bởi vì nó thực sự làm
for 8: 1000 & 0001 which gives 0
for 7: 0111 & 0001 which gives 1?
Giả định của bạn về những gì 'x & y' trả lại là sai. – chris
"tuyên bố nếu điều gì đang kiểm tra là đúng và những gì là sai khi đối phó với các nhà khai thác bit-khôn ngoan." - kiểm tra tình trạng chỉ quan tâm đến kết quả cuối cùng, không bao giờ về cách tính toán. –
& là bitwise và. 1000 là 1111101000, trong khi 1 là 1. 1111101000 & 1 là 0, do đó, nó là sai. – Cubic