for (unsigned int i = 1; i <= 100; i++) {
if (i & 0x00000001) {
std::cout << i<<",";
}
}
为什么(以及如何):if( i & 0x00000001 )
找出奇数?
0x00000001
is 1
尽管它是用十六进制(base-16)表示法编写的,但还是以二进制形式表示。这就是0x
part.
&
是按位“AND”运算符,用于进行二进制数字(位)操作。
i & 1
将 i 的所有二进制数字转换为零,除了最后一位。
将结果 1 位数字转换为布尔值很简单,以便由if
陈述。
下图显示了 i 的最后 16 位二进制数字,以及它们发生了什么。
i: i in binary: i & 1 in binary: convert to boolean
---- ------------------- ------------------- ---------------------
1 0000000000000001 0000000000000001 true
2 0000000000000010 0000000000000000 false
3 0000000000000011 0000000000000001 true
4 0000000000000100 0000000000000000 false
5 0000000000000101 0000000000000001 true
6 0000000000000110 0000000000000000 false
7 0000000000000111 0000000000000001 true
8 0000000000001000 0000000000000000 false
... ... ... ...
99 0000000001100011 0000000000000001 true
100 0000000001100100 0000000000000000 false
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)