c语言 异或_C语言的位级运算

796765875156786ce6b6100233657616.png

二进制是计算机编码、存储和操作信息的核心,围绕数值0和1的研究已经演化出了丰富的数学知识体系。这起源于1850年前后乔治•布尔(George Boole)的工作,布尔注意到将逻辑值True(真)和False(假)编码为二进制值1和0,能够设计出一种代数,以研究逻辑推理的基本原则。因此也称为布尔代数(Boolean algebra)。

最简单的布尔代数是在二元集合{0,1}基础上的定义。下图是这种布尔代数中的几种运算。

a03cd4f7274357cf04a951285105f9e6.png

用来表示这些运算的符号与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语言的一个很有用的特性就是它支持按位布尔运算,在布尔运算中使用的符号(~、&、|、^)能运用到任何整型的数据类型上。

547d51e14a6604d4124f67e573897090.png

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

3772b62a07bd3b8345bb5bb85d33802d.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值