Linx位运算.pptVIP

  • 13
  • 0
  • 约3.02千字
  • 约 15页
  • 2017-08-09 发布于河南
  • 举报
青岛大学 信息工程学院 钱树伦 15.1 什么是位运算 内存单元,即1B,我们说char型占1个内存单元(1B),而short型占2个内存单元(2B)。1B被当成整体来看,但不要忘记有下面的等式成立: 1 B = 8 bits 1个字节有8个位,每个位有0、1两个取值,从这个角度上说,1个字节所能包含的意义似乎比预想的要大的多。 15.1.1 开灯关灯 举例来说,房间里有8盏灯,为了控制每盏灯的亮灭,可以声明8个Byte变量,变量为0代表灯灭,变量非0代表灯亮,这完全行得通,而且看起来很有效率。 能否换种角度思考,能不能只有1个字节的8个位来控制8盏灯?该位为0代表灯灭,该位为1代表灯亮,答案是“可以”,比较两种方法,发现使用位操作的方式有效节省了内存,如所示: 15.1.2 改变状态 假设某个时刻,灯1和灯2亮,而其他灯都灭,此时控制字想变换下状态,让灯1和灯3亮, 其他灯灭,目标控制字只要赋值给该单元即可。 问题又来了,如果原来不知道哪几盏灯亮哪几盏灯灭,现在还是想让第3盏灯亮起来,赋值操作看来是行不通了,要如何做呢? 在这个背景下,位运算的概念被提出,即能否只改变控制第3盏灯的那一位的状态?本章的剩余章节将结合开灯关灯这一场景讲述位运算的内容。 总体来说,C语言中的位运算符有以下两类: 位逻辑运算符:(位“与”)、^(位“异或”)

文档评论(0)

1亿VIP精品文档

相关文档