寄存器操作的问题

2019-08-14 05:01发布

   (SysTick->CTRL) & (1<<16)其中CTRL 是32位的,要判断第16位是否为1  代码如下:
     while( !((SysTick->CTRL) & (1<<16)) );

我是这样理解的:由于CTRL是32为,其中17~32保留,其中 (x未知,0或1)
   0X0000 0000 0000 000x 0000 0000 0000 0000  &  0x0000 0000 0000 0001 0000 0000 0000 0000  
x=1时,结果为 0x 0000 0000 0000 0001 0000 0000 0000 0000  

那么  while(0x 0000 0000 0000 0001 0000 0000 0000 0000  ) 与while(1)  完全相同吗?



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
正点原子
1楼-- · 2019-08-14 05:25
是相同的。
xlong_06
2楼-- · 2019-08-14 06:11
while(0x 0000 0000 0000 0001 0000 0000 0000 0000  ) 与while(1) 功能上是一样的,while() 里面判断的是关系运算符
huanghan
3楼-- · 2019-08-14 10:39
本帖最后由 huanghan 于 2017-8-29 20:59 编辑
xlong_06 发表于 2017-8-29 18:00
while(0x 0000 0000 0000 0001 0000 0000 0000 0000  ) 与while(1) 功能上是一样的,while() 里面判断的是 ...

while(0x 0000 0000 0000 0001 0000 0000 0000 0000  ) 与while(1) 功能上是一样的,while() 里面只作条件的真,假判断,假=0;真!=0;
图南
4楼-- · 2019-08-14 13:25
 精彩回答 2  元偷偷看……
cromarti
5楼-- · 2019-08-14 16:47
对于c来讲是一样的,因为c是非0为真,其他的就不好说了
操作系统
6楼-- · 2019-08-14 22:29
哪来这么奇怪的问题.

一周热门 更多>