二进制是计算机编码、存储和操作信息的核心,围绕数值0和1的研究已经演化出了丰富的数学知识体系。这起源于1850年前后乔治•布尔(George Boole)的工作,布尔注意到将逻辑值True(真)和False(假)编码为二进制值1和0,能够设计出一种代数,以研究逻辑推理的基本原则。因此也称为布尔代数(Boolean algebra)。
最简单的布尔代数是在二元集合{0,1}基础上的定义。下图是这种布尔代数中的几种运算。
用来表示这些运算的符号与C语言位级运算使用的符号是相匹配的。
后来创立信息论的Claude Shannon首先建立了布尔代数和数字逻辑之间的联系。他在1937年的硕士论文中表明了布尔代数可以用来设计和分析机电继电器网络。
C语言的一个很有用的特性就是它支持按位布尔运算,在布尔运算中使用的符号(~、&、|、^)能运用到任何整型的数据类型上。
确定一个位级表达式的结果的最好办法就是将十六进制的参数用二进制表示再执行二进制运算,然后再转回十六进制。