+ -
当前位置:首页 → 问答吧 → 求帮助 c

求帮助 c

时间:2011-12-23

来源:互联网

标记的代码如何理解啊
for (unsigned i = 0; i < f_sys_str.bm.bitMapLength / 8; i++) //位示图边长为8
{
a = f_sys_str.bm.BMStart[i] | 0x7F; //127
if (a == 0x7F)
{
return i * 8; //一个字节左边第一位为0,表示该区域未使用
}

a = f_sys_str.bm.BMStart[i] | 0xBF; //191
if (a == 0xBF)
{
return i * 8 + 1;
}

a = f_sys_str.bm.BMStart[i] | 0xDF; //223
if (a == 0xDF)
{
return i * 8 + 2;
}

a = f_sys_str.bm.BMStart[i] | 0xEF; //239
if (a == 0xEF)
{
return i * 8 + 3;
}

a = f_sys_str.bm.BMStart[i] | 0xF7; ///247
if (a == 0xF7)
{
return i * 8 + 4;
}

a = f_sys_str.bm.BMStart[i] | 0xFB; //251
if (a == 0xFB)
{
return i * 8 + 5;
}

a = f_sys_str.bm.BMStart[i] | 0xFD; //253
if (a == 0xFD)
{
return i * 8 + 6;
}

a = f_sys_str.bm.BMStart[i] | 0xFE; //254
if (a == 0xFE)
{
return i * 8 + 7;
}
}
return blockCountOfFileSys + 1;
}

作者: shl_gao   发布时间: 2011-12-23

位运算,比如第一个,你把191转换为二进制就是1011 1111 ;
a = f_sys_str.bm.BMStart[i] |0xBF; //191

a是f_sys_str.bm.BMStart[i]和0xBF 进行与运算 (|) 的结果;

作者: liuliufen   发布时间: 2011-12-23

热门下载

更多