请教&~操作的作用,注意是一起用,比如top = (VP)(((UINT)top + 7) & ~0x00000007U);

xiao88yan 2006-02-25 01:16:52
请教&~操作的作用,注意是一起用
比如top = (VP)(((UINT)top + 7) & ~0x00000007U);

在一个嵌入式操作系统的源码里看到的,关于内存页管理(初始化),C语言,其中VP UINT是已定义好的宏
有牛人欢迎指教
...全文
50 点赞 收藏 1
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Great_Bug 2006-02-25
~0x00000007U就是0xfffffff8, 也就是 top = (VP)(((UINT)top + 7) & 0xfffffff8;
把最低的3bit清0.

通常这是写入某设备的控制寄存器,并只改变特定的一些bit,其他的不变。
一般来说
top = (VP)(((UINT)top + 7) & ~0x00000007U);

top = (VP)(((UINT)top + 7) | 0x00000007U);
为一对相反的操作,且很多时候这些常数会被定义为易于理解的符号名称。
回复
相关推荐
发帖
驱动开发/核心开发
创建于2007-09-28

2.1w+

社区成员

硬件/嵌入开发 驱动开发/核心开发
申请成为版主
帖子事件
创建了帖子
2006-02-25 01:16
社区公告
暂无公告