1.若a是32位int类型变量,判断其32个2进位中末两位均为1的表达式为( )。
A、 a&3==3 B、 a&3==11
C、 a&11==3 D、 a&11==11
2.执行语句“for(float x=0,s=0; x!=60; x=x+0.3) s=s+x;”后,变量x的值为( )。
A、不可能大于60 B、不可能大于60.3
C、一定小于60 D、可以远大于60
第一题选A,第二题选 D求详解
第一题D为什么错了?
追答11的二进制是1011啊,不是11,&是按二进制的数来运算的
追问1011
1111
&-----------------
1011
1011
0011
&-----------------
0011
对啊,怎么
所以最后两位都是1,而其它都不是1的是只有3
11的最后两位都是1,但它前面有地方不是0,
所以你要用 a&11==11的话相当于判断了最后两位和倒数第四位都是1