C语言位操作

C语言state&0x8000?1:0是什么意思

如果state&0x8000的值为0,则state&0x8000?1:0的结果就是0,否则就是1。

state&0x8000是按位进行与操作,与操作就是把两个数都转化为二进制数,然后对应位依次进行比较,如果对应位都为1,那么与操作结果就是1,如果没有对应位都为1的情况,那么与操作结果就是0。

0x8000是十六进制数,转换成二进制就是1000 0000 0000 0000,然后与state的值按位进行与操作。这里如果state的值也为0x8000,那么这个与操作结果就是1,否则与操作结果就是0.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-26
8000为16位进制数 为真值,输出为1 ?是1和0 真的时候输出1,假的时候输出0 个人理解。。。
第2个回答  2019-03-05
3
=
b
0000
0011
6
=
b
0000
0110
取或运算:任意一比特位为1,最后都运算结果都为1
所以或操作的结果为
b
0000
0111
这个比特位值为7
所以printf输出为7。
望采纳。
第3个回答  2020-02-27
位运算最好的理解就是把十进制数转换成二进制数,然后按位进行位运算操作。比如3
=
0011B,6
=
0110B,那么a|b
=
0111B
=
7

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网