读书人

下面这句语法看得痛苦求!关于移位解

发布时间: 2012-04-15 18:39:21 作者: rapoo

下面这句语法看得痛苦,急求!!!关于移位
#define BASE 0xE000E100
*(volatile UINT32 *)( BASE + ((Num >> 5) << 2)) = 1 << (Num) & 0x1F);


[解决办法]
什么东东。
BASE + ((Num >> 5) << 2)内存地址。
1 << (Num) & 0x1F)值。
*(volatile UINT32 *)( BASE + ((Num >> 5) << 2)) = 1 << (Num) & 0x1F);//指定的内存地址赋值,操作类型为UINT32。

[解决办法]
*(volatile UINT32 *)( BASE + ((Num >> 5) << 2)) = 1 << (Num) & 0x1F;
//分号前多了一个)
//在地址‘0xE000E100+Num整除8’处填写‘2的(Num%32)次方’对应的无符号32位整数。
//不保证对。



[解决办法]
括号配对吗?
[解决办法]
在地址‘0xE000E100+Num整除32再乘4’处填写‘2的(Num%32)次方’对应的无符号32位整数。

[解决办法]

探讨
#define BASE 0xE000E100
*(volatile UINT32 *)( BASE + ((Num >> 5) << 2)) = 1 << (Num) & 0x1F);

[解决办法]
因为<<优先级比&高
所以上面我的答案纠正为:
在地址‘0xE000E100+Num整除32再乘4’处填写‘(2的Num次方)除以32的余数’对应的无符号32位整数。

读书人网 >C++

热点推荐