【发布时间】:2016-08-25 10:40:58
【问题描述】:
下面是 switch 语句的一些代码。 getvalue() 返回一个 unsigned long。
有人可以解释为什么value 与0xffffffff 按位与运算。
单片机是 32 位的。
#define WriteMemory(A,V) *(volatile unsigned long*)(A)=(V)
static unsigned value;
case 'b':
value = getvalue();
value &= 0xffffffff;
WriteMemory(2147455555, value);
break;
【问题讨论】:
-
不,除非你发布
value的变量声明,否则没人能解释。 -
对于典型的 32 位架构 (ILP32) 和 POSIX 64 位架构 (I32LP64) 上的优化编译,汇编代码显示了什么?你怎么理解?
-
@Lundin 我已经更新了这个问题。
value被声明为static unsigned。谢谢
标签: c bit-manipulation