二進(jìn)制運(yùn)算在編程中的一些常見用法

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

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容