二進(jìn)制是計(jì)算機(jī)編碼、存儲(chǔ)和操作信息的核心,圍繞數(shù)值0和1的研究已經(jīng)演化出了豐富的數(shù)學(xué)知識(shí)體系。這起源于1850年前后喬治•布爾(George Boole)的工作,布爾注意到將邏輯值True(真)和False(假)編碼為二進(jìn)制值1和0,能夠設(shè)計(jì)出一種代數(shù),以研究邏輯推理的基本原則。因此也稱為布爾代數(shù)(Boolean algebra)。
最簡(jiǎn)單的布爾代數(shù)是在二元集合{0,1}基礎(chǔ)上的定義。下圖是這種布爾代數(shù)中的幾種運(yùn)算。
用來表示這些運(yùn)算的符號(hào)與C語言位級(jí)運(yùn)算使用的符號(hào)是相匹配的。
- 布爾運(yùn)算 ~ 對(duì)應(yīng)于邏輯運(yùn)算:非 NOT。在命題邏輯中,當(dāng)P等于0時(shí),~P等于1,反之亦然。
- 布爾運(yùn)算 & 對(duì)應(yīng)于邏輯運(yùn)算:且 AND。在命題邏輯中,當(dāng)P=1且Q=1時(shí),P&Q才等于1。
- 布爾運(yùn)算 | 對(duì)應(yīng)于邏輯運(yùn)算符:或 OR。在命題邏輯中,當(dāng)P=1或Q=1時(shí),P|Q等于1。
- 布爾運(yùn)算 ^ 對(duì)應(yīng)于邏輯運(yùn)算符 :異或。在命題邏輯中,當(dāng)P=1且Q=0,或 P=0且Q=1時(shí),P^Q等于1。
后來創(chuàng)立信息論的Claude Shannon首先建立了布爾代數(shù)和數(shù)字邏輯之間的聯(lián)系。他在1937年的碩士論文中表明了布爾代數(shù)可以用來設(shè)計(jì)和分析機(jī)電繼電器網(wǎng)絡(luò)。
C語言的一個(gè)很有用的特性就是它支持按位布爾運(yùn)算,在布爾運(yùn)算中使用的符號(hào)(~、&、|、^)能運(yùn)用到任何整型的數(shù)據(jù)類型上。
確定一個(gè)位級(jí)表達(dá)式的結(jié)果的最好辦法就是將十六進(jìn)制的參數(shù)用二進(jìn)制表示再執(zhí)行二進(jìn)制運(yùn)算,然后再轉(zhuǎn)回十六進(jìn)制。






