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

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

在一个嵌入式操作系统的源码里看到的,关于内存页管理(初始化),C语言,其中VP UINT是已定义好的宏
有牛人欢迎指教
...全文
105 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
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);
为一对相反的操作,且很多时候这些常数会被定义为易于理解的符号名称。

21,616

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧