我试图理解 if 条件如何与按位运算符一起使用。
检查数字是偶数还是奇数的方法可以通过以下方式完成:
#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;
}
我不明白的部分是 if 条件如何工作。在这种情况下,如果 i = 8 那么它正在执行的 if 语句1000 & 1
应该返回 1000,等于 8。
如果 i = 7,那么在 if 语句中应该这样做111 & 1
返回 111,等于 7
为什么 if(8) 返回“偶”而 if(7) 返回“奇”?我想我想了解在处理按位运算符时 if 语句检查什么是 True 以及什么是 False。
当我写下这个问题时只是一个想法,因为它实际上正在做
for 8: 1000 & 0001 which gives 0
for 7: 0111 & 0001 which gives 1?
是的,你在最后一部分是对的。二进制&
and |
都是一点一点进行的。自从
1 & 1 == 1
1 & 0 == 0
0 & 1 == 0
0 & 0 == 0
我们可以看到:
8 & 1 == 1000 & 0001 == 0000
and
7 & 1 == 0111 & 0001 == 0001
Your test
函数确实可以正确计算一个数字是偶数还是奇数,因为a & 1
测试是否有1
在 1 的位置,只有奇数才存在。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)