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,而前几位不变。