【发布时间】:2012-10-24 17:21:15
【问题描述】:
我试图了解 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,那么 in If 语句正在执行 1000 & 1,它应该返回等于 8 的 1000。
如果 i = 7,那么在 if 语句中它应该执行111 & 1,它返回等于 7 的 111
为什么 if(8) 会返回“偶数”而 if(7) 会返回“奇数”?我想我想了解 if 语句在处理按位运算符时检查的是什么为真,什么是假的。
当我写下这个问题时只是一个想法是因为它实际上正在做
for 8: 1000 & 0001 which gives 0
for 7: 0111 & 0001 which gives 1?
【问题讨论】:
-
您对
x & y返回的内容的假设是错误的。 -
"在处理按位运算符时,if 语句检查什么为真,什么为假。" - 条件检查只关心最终结果,而不关心它是如何计算的。
-
@Cubic:我向你保证,在任何系统上都没有十进制 8 表示为 1111101000。在几乎所有系统上,它都是 00001000。
-
@MooingDuck 我得到了你在拖钓的明显印象。这不是你第一次以完全荒谬的方式回复我的评论了。
-
@MooingDuck 他大概的意思是数字一千(十进制的1000)是二进制的1111101000。
标签: c++ bitwise-operators