位运算是对表示数据的基本单元进行"加和","减除"的方法.
首先一个位(bit)单位就是0或1,硬件表示就是一个肪冲的开和,这是硬软通迅最基本的单元.我们所说的一个字节(byte)需要8个位来表示,一个字(WORD)要两个字节,16个位表示.一个双字(DWORD)要两个字,四个字节,32个位来表示.
0 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 1 1 1 0 1 0 0 0 1 1 1 1 0 0 0
|- bit 31 ... bit 0 - |
|- BYTE 3 -| |- BYTE 2 -| |- BYTE 1 -| |- BYTE 0 -|
|--------- WORD 1 --------| |-------- WORD 0 ----------|
|----------------------------- DWORD -----------------------------|
在C++中往往需要用字节,字,双字来操作数据,然而使用这种二进数来显示数并不是很方便,而使用十进制数显示,不能化整,因此选择使用16进制数来显示数据,因为一个16进制数每个个位正好就是4个二进制位的表示,一个字节8位,一个16进制数4位表示,因此一个字节用两个16进制数表示.据此,实际图像运算时双字指针比单字指针快,单字指针比字节指针快
8B+字符的ascII对照:
8 B +
十进制: 56 66 43
16进制: 38 42 2B
二进制: 0011 1000 0100 0010 0010 1011
使用位运算的好处是可以将BYTE, WORD 或 DWORD 作为小数组或结构使用。通过位运算可以检查位的值或赋值,也可以对整组的位进行运算。
位运算有六种运算符可以使用:
& 与运算
| 或运算
^ 异或运算
~ 非运算(求补)
>> 右移运算
<< 左移运算
与运算(&a