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

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); //这一句是什么意思,也请高手分析一下
.....
}
...全文
111 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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

下同,

学习中...
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.5w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-04-30 04:50
社区公告
暂无公告