C语言位操作

发布网友 发布时间:2022-04-23 05:39

我来回答

4个回答

热心网友 时间:2023-10-16 21:06

如果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.

热心网友 时间:2023-10-16 21:06

8000为16位进制数 为真值,输出为1 ?是1和0 真的时候输出1,假的时候输出0 个人理解。。。

热心网友 时间:2023-10-16 21:07

3
=
b
0000
0011
6
=
b
0000
0110
取或运算:任意一比特位为1,最后都运算结果都为1
所以或操作的结果为
b
0000
0111
这个比特位值为7
所以printf输出为7。
望采纳。

热心网友 时间:2023-10-16 21:07

位运算最好的理解就是把十进制数转换成二进制数,然后按位进行位运算操作。比如3
=
0011B,6
=
0110B,那么a|b
=
0111B
=
7

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com