第十一章位运算一、位运算的概念二、位运算符三、位运算的常用用法四、位运算复合赋值运算符五、位段前面所学习的所有运算都是对某个变量所进行的操作,其实C语言还可以对变量中的个别位进行操作
尤其是使用C语言编写设备驱动程序、嵌入式程序的时候,某个变量的每一位都会有特定的含义
本章将介绍C语言中的位运算
一、位运算的概念日常生活中常用十进制的数据描述事物
但是,对计算机的硬件来说,一个物理器件一般有两个明显的稳定状态,例如:电路的开、关状态;电平的高、低状态;磁盘上某个点的顺磁、逆磁状态;光盘上某个点的平、凹状态等
所以,计算机世界是一个二进制的0、1世界,每个0或1是一个位
8个位组成一个字节
在VC编译系统中,一个int型变量占4个字节,也就是32位的存储单元
位运算可以对32个位中的任意一位进行运算
例如:inta;a=4;如图所示
二、位运算符在C语言中,提供位逻辑运算符和移位运算符
1、位逻辑运算符C语言中位逻辑运算符有四种:按位与、按位或、按位异或、按位取反
1)“按位与”运算符——“&”参加运算的两个数据,按二进位进行“与”运算
运算规则是:0&0=0;0&1=0;1&0=0;1&1=1;【例11-1】3&5值是多少
#includevoidmain(){printf("%d\n",3&5);}【例11-2】-3&-5值是多少
#includevoidmain(){printf("%d\n",-3&-5);}2)“按位或”运算符——“|”两个相应的二进位中只要有一个为1,该位的结果值为1
运算规则是:0|0=0;0|1=1;1|0=1;1|1=1;【例11-3】060|017的值是多少
(八进制)#includevoidmain(){printf("%o\n",060|017);}3)“按位异或”运算符——“∧”参加运算的两个二进位同号,则结果为0(假);异号则为1(