2013-11-02 20 views
-6
if (!(y&1)) 

    { 

     c[x++]=d[--y]; 

    } 

我无法理解此语句的作用。 y是一个int值。如果按位运算符的条件使用困难

什么是不是(!)符号?

+0

提示:'y&1'的结果是什么?何时会满足? – Maroun

+0

'!'是一个一元运算符,即所谓的**不**。搜索一下C运营商的一元/位元 –

回答

2

!0转换为1,其他所有转换为0

y&1结果0如果y最新位0(即y2功率):

......0 
0000001 
------- 
0000000 

......1 
0000001 
------- 
0000001 

因此,if只是简单地测试,如果y电量的倍数2.

+0

是的,我正在考虑其他的东西。谢谢。 –

1

当数字y是偶数时条件成立,而当数字y是奇数时条件成立。

表达

y & 1 

装置按位与的整数Y和1的结果是有效地等于y的至少显著位。奇数的最后一位设置为1;对于偶数,最后一位始终为零。

添加一个NOT!运算符反转该位。