1.用整形值替代布爾值作為邏輯上的開關(guān)
舉個(gè)例子:
int key_up = 1; // 1
int key_down = 2; // 1<< 1
int key_left = 4; // 1<< 2
int key_right = 8; // 1 << 3
int mKey = 0;
void touchKey (int touched) {
? ? mKey |= touched;
}
bool isTouchedKey(int key) {
? ? return (mKey & key) != 0;
}
代碼邏輯:用mKey這個(gè)整型值二進(jìn)制的最后四位,分別表示上下左右按鍵是否被按下,
按下時(shí)可調(diào)用touchKey(key_up | key_down),查詢時(shí)可用isTouchedKey(key_up).
2.socket通信,從socket連接的輸入流中讀取數(shù)據(jù)
舉個(gè)例子:
從socket連接中讀取一個(gè)int值
int a = 0;
int byteNum = 4;
for (int i = 0; i < 4; i++)
{
a <<= 8;
byte tmp = bReader.ReadByte();
a |= (tmp & 0x000000ff);
}
代碼邏輯:從字節(jié)流中循環(huán)讀取4個(gè)字節(jié),并且通過(guò)移位和按位或的操作得到int值。
3.加密運(yùn)算
簡(jiǎn)單的異或加密,直接使用的是二進(jìn)制運(yùn)算中^異或運(yùn)算符。
4.條件判斷
類似這樣的代碼:
if ((a & 0x7fffff00) == 0) {
? ? // do something
}
等價(jià)于
if (a < 256) {
? ? // do something
}