24/12/251CC语言程序设计语言程序设计第第1212章位运算章位运算北京航空航天大学北京航空航天大学交通科学与工程学院交通科学与工程学院徐国艳徐国艳24/12/252本章内容本章内容§12
1位及位运算的概念位及位运算的概念§12
2位运算符位运算符§12
3位运算举例位运算举例24/12/253位运算:二进制位的运算
位运算:二进制位的运算
在内存中每一个字节有一个地址
在内存中每一个字节有一个地址
一个字节由一个字节由88位二进制位组成
位二进制位组成
位操作是直接对二进制位进行的,位运算只适用于位操作是直接对二进制位进行的,位运算只适用于无符号整型变量无符号整型变量
0111110101111101最低位最低位最高位最高位§12
1位及位运算的概念位及位运算的概念24/12/254§12
2位运算符位运算符CC语言提供如下位运算符
其中除运算符语言提供如下位运算符
其中除运算符~~以以外
都是二目运算符
都是二目运算符
运算符运算符语义语义&&按位与按位与||按位或按位或∧∧按位异或按位异或~~按位取反按位取反右移右移24/12/255参加运算的两个运算量,如果对应二进制位都是参加运算的两个运算量,如果对应二进制位都是11,则该位的结果为,则该位的结果为11,否则该位是,否则该位是00
例例::用按位与操作实现宏用按位与操作实现宏is_oddis_odd,,判断某个整判断某个整数是否为奇数数是否为奇数::##defineis_odd(x)(1&(unsigned)(x))defineis_odd(x)(1&(unsigned)(x))也可以用按位与运算也可以用按位与运算屏蔽屏蔽掉某些二进制位,如掉某些二进制位,如::c=n&0177c=n&01771
按位“与”运算符按