C语言的位级运算


C语言的位级运算

文章插图
 
二进制是计算机编码、存储和操作信息的核心,围绕数值0和1的研究已经演化出了丰富的数学知识体系 。这起源于1850年前后乔治•布尔(George Boole)的工作,布尔注意到将逻辑值True(真)和False(假)编码为二进制值1和0,能够设计出一种代数,以研究逻辑推理的基本原则 。因此也称为布尔代数(Boolean algebra) 。
最简单的布尔代数是在二元集合{0,1}基础上的定义 。下图是这种布尔代数中的几种运算 。
C语言的位级运算

文章插图
 
用来表示这些运算的符号与C语言位级运算使用的符号是相匹配的 。
  • 布尔运算 ~ 对应于逻辑运算:非 NOT 。在命题逻辑中,当P等于0时,~P等于1,反之亦然 。
  • 布尔运算 & 对应于逻辑运算:且 AND 。在命题逻辑中,当P=1且Q=1时,P&Q才等于1 。
  • 布尔运算 | 对应于逻辑运算符:或 OR 。在命题逻辑中,当P=1或Q=1时,P|Q等于1 。
  • 布尔运算 ^ 对应于逻辑运算符 :异或 。在命题逻辑中,当P=1且Q=0,或 P=0且Q=1时,P^Q等于1 。
后来创立信息论的Claude Shannon首先建立了布尔代数和数字逻辑之间的联系 。他在1937年的硕士论文中表明了布尔代数可以用来设计和分析机电继电器网络 。
C语言的一个很有用的特性就是它支持按位布尔运算,在布尔运算中使用的符号(~、&、|、^)能运用到任何整型的数据类型上 。
C语言的位级运算

文章插图
 
确定一个位级表达式的结果的最好办法就是将十六进制的参数用二进制表示再执行二进制运算,然后再转回十六进制 。
 

【C语言的位级运算】


    推荐阅读