标题: 这2个C语言语句的意义? [打印本页]

作者: 李冬    时间: 2022-11-21 14:51
标题: 这2个C语言语句的意义?
两个与操作的意义是什么?谢谢大家

51hei图片_20221121145101.png (21.25 KB, 下载次数: 31)

51hei图片_20221121145101.png

51hei图片_20221121145935.png (14.84 KB, 下载次数: 40)

51hei图片_20221121145935.png

作者: xuyaqi    时间: 2022-11-21 16:38
本帖最后由 xuyaqi 于 2022-11-22 07:39 编辑

上面一个 , sta.. 与   0x0008                    位与 的运算结果作为判断依据;
下面一个,sta.. 与(0x0018按位取反后)位与 的运算结果作为判断依据
作者: 李冬    时间: 2022-11-21 17:03
xuyaqi 发表于 2022-11-21 16:38
上面一个 , sta.. 与   0x0008                    位与 的运算结果作为判断依据;
下面一个,sta.. 与(0 ...

不够详细
作者: xuyaqi    时间: 2022-11-21 18:24
本帖最后由 xuyaqi 于 2022-11-22 07:37 编辑
李冬 发表于 2022-11-21 17:03
不够详细

上面一个 ,                        0x0008 -》..000001000B,判断sta.. 倒数第4位是0还是1
下面一个,(0x0008按位取反后) -》..111110111B,判断sta.. 倒数第4位是0还是1
作者: 名字不是重点    时间: 2022-11-21 18:59
本帖最后由 名字不是重点 于 2022-11-21 19:12 编辑

比如:

statusregister &(0x0008)=>
0x0008=B_0000_0000_0000_1000 :
"&" 即“与”运算,在这边就是判断statusregister这个变量的第3位是为“0”或为“1”,

statusregister &(~0x0018)=>
"~" 即数值取反的意思,即 B_ 0000_0000_0001_1000 取反,相当于0xFFFF - 0x0018 = 0xFFE7 ;
"&" 即“与”运算,在这边就是把statusregister这个变量的第3/4位置“0”,其它位不变。


如果还没看明白,可真得要拿起C的基本知识重温一下了。
作者: 1261867136qq    时间: 2022-11-22 08:31
简单的来说: &" “与”运算,有0 出0 ,全1才是1,这么看,应该是判断 某位是否为1
然后,&" “与”运算 加上  取反, 就记住: 是1的那个位,置0 ,
作者: Longan.Wang    时间: 2022-11-22 08:54
前一句是判断状态寄存器的bit3是否为‘1’;
后一句把状态寄存器的bit4和bit3清‘0’,之后再把状态寄存器的内容写到0x8000这个地址。
作者: 李冬    时间: 2022-11-22 09:00
名字不是重点 发表于 2022-11-21 18:59
比如:

statusregister &(0x0008)=>

回答的很好
作者: 李冬    时间: 2022-11-22 09:00
1261867136qq 发表于 2022-11-22 08:31
简单的来说: &" “与”运算,有0 出0 ,全1才是1,这么看,应该是判断 某位是否为1
然后,&" “与”运算  ...

回答的很好

作者: 李冬    时间: 2022-11-22 09:46
Longan.Wang 发表于 2022-11-22 08:54
前一句是判断状态寄存器的bit3是否为‘1’;
后一句把状态寄存器的bit4和bit3清‘0’,之后再把状态寄存器 ...

如果除BIT3外其他位为1。会不会造成判断错误
作者: 名字不是重点    时间: 2022-11-23 16:53
李冬 发表于 2022-11-22 09:46
如果除BIT3外其他位为1。会不会造成判断错误

你去KFC消费,KTV失窃与你何干?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1