读书人

C++ 位操作 很奇怪的表达式来看看

发布时间: 2012-08-10 12:19:33 作者: rapoo

C++ 位操作 很奇怪的表达式,高手进来看看

C/C++ code
bool CCmdPackager::Alloc(int size){    assert(m_iBufSize>=0);    assert(m_iDataSize>=0);    assert(m_iReadPointer>=0);    int s=m_iBufSize-m_iDataSize;    if(s>=size) return true;    s=((m_iDataSize+size+0x0ffff)&(~0x0ffff));}

其中
C/C++ code
s=((m_iDataSize+size+0x0ffff)&(~0x0ffff));

得到是什么意思

[解决办法]
对齐到 0x10000
[解决办法]
~是按位取反,(~0x0ffff)就是后面四个f全部变为0,前面各位都为f,再做&与运算,即把十六进制的后四位清0,而前几位不变。

读书人网 >C++

热点推荐