这一句是什么意思,请高手分析一下

cpp99 2004-04-30 04:50:33
int block_write(int dev,long *pos,char *buf,int count)
{
.....
int block =*pos >>BLOCK_SIZE_BITS; //这一句是什么意思,请高手分析一下
int offset =*pos & (BLOCK_SIZE-1); //这一句是什么意思,也请高手分析一下
.....
}
...全文
141 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
caizhiyi123 2004-05-03
  • 打赏
  • 举报
回复
1。显然,*pos 是long型,计算机中的数都以二进制表示,*pos >>BLOCK_SIZE_BITS是将*pos的二进制形式右移BLOCK_SIZE_BITS位,相当于十进制数long型的*pos除以2的BLOCK_SIZE_BITS次方,后再赋值给int型的block(不致于有数据切割)。
2。按位与也必须是在二进制情况下进行,将*pos (long型数,在32-bit系统中用4bytes表示,占32bits)和BLOCK_SIZE-1(未标明,应该是这块内存区的大小)按位与,得到的二进制数只是内部的,系统会将其转化为十进制数,再赋给int型的offset。得到的应该是其相对于内存区的偏移量。
iori40995 2004-05-02
  • 打赏
  • 举报
回复
字面上的意义很简单,就是把pos的内存地址的二进制表示的值右移BLOCK_SIZE_BITS,但是有什么用处就很难讲了。
iwebet 2004-04-30
  • 打赏
  • 举报
回复
看不懂
doolin 2004-04-30
  • 打赏
  • 举报
回复
第一句: 把pos所指向内存的值右移BLOCK_SIZE_BITS位,负给block
第二句: ...................和BLOCK_SIZE-1相与.............
zhouqingyuan 2004-04-30
  • 打赏
  • 举报
回复
>>移位运算符号
&与运算
掐死温柔 2004-04-30
  • 打赏
  • 举报
回复
第一句是把*pos >>BLOCK_SIZE_BITS的接收值地址给BLOCK

下同,

学习中...

70,022

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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