& 运算符是什么意思?
What does the & operator mean?
我正在尝试理解 c++ 中 if-else 语句的条件,这是该语句所在的代码段(不是速记版本(:
for (int i = 0; i < 8; ++i)
{
Point newCenter = center;
newCenter.x += oneEighth.x * (i&4 ? 0.5f : -0.5f);
}
我确实理解如果条件为真,则 0.5f 成立,否则为 -0.5f,但i&4
是什么意思?
这里使用了两件事,首先它使用按位 AND 运算符&
,这采用两个整数(i
和 4
(的二进制表示并计算两者的按位 AND(即对于结果二进制表示中的每个位置的数字,我们查看两个参数中相应位置的位,并将结果位设置为 1
if 且仅如果参数中的两个位都是 1
(,其次,它使用隐式int
来bool
转换,如果整数不等于 0
则返回true
。
例如,如果我们有 i=7
,那么它在 2 补码中的内部按位表示将是:
/*24 0s*/ 0 0 0 0 0 1 1 1
并且 4
的两者补码表示是/*24 0s*/ 0 0 0 0 0 1 0 0
的,因此按位 AND 是/*24 0s*/ 0 0 0 0 0 1 0 0
的,由于这不等于零,因此隐式转换为 true
,因此满足条件。
或者,如果我们考虑 i=2
,那么我们有内部表示:
/*24 0s*/ 0 0 0 0 0 0 1 0
因此,按位 AND 给出/*24 0s*/ 0 0 0 0 0 0 0 0
,因此不满足条件。
运算符是按位 AND。按位二进制 AND 以二进制形式在数字的每个位置执行位的逻辑 AND。
所以,在你的代码中,当i为4,5,6,7时,i&4为真,因为4的底数2表示是100。 当i的底数2表示在第3位有1时,i&4将为真(右-左(
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 当我们说在执行程序时将操作系统的控制权传递给main()函数时,我们的意思是什么
- 这句话在c++中的意思是什么
- 这个typedef的意思是什么
- 这句话的意思是什么
- 意思是什么
- 这个句法的意思是什么?