}
该函数获得位运算的一些常量。由n值决定返回值中起始位为1的位数。如n=0,返回00000000;n=1,返回10000000;n=2,返回11000000。依次类推。
4.6 ArrayLeftBitMove函数
BOOL CDib::ArrayLeftBitMove(LPBYTE lp_Array, int n_Size, short s_Move)
{
if(s_Move < 0 || s_Move >8){
AfxMessageBox("ArrayLeftBitMove: Not proper Bit No.");
return FALSE;
}
if(s_Move == 0)
return TRUE;
BYTE m_BTemp;
int i;
for(i = 0; i < n_Size-1; i++){
*(lp_Array+i) <<= s_Move;
m_BTemp = *(lp_Array+i+1);
m_BTemp >>= (8-s_Move);
*(lp_Array+i) |= m_BTemp;
}
*(lp_Array+n_Size-1) <<= s_Move;
return TRUE;
}
该函数对Byte数组进行左移位运算。lp_Array:Byte数组指针;n_Size:数组长度;s_Move:移位次数。如2个Byte的数组000110100 10111111左移3位后变成:110100101 11111100。
|