第第99章位运算章位运算9
1位及位运算的概念位及位运算的概念位运算位运算:二进制位的运算
:二进制位的运算
在内存中每一个字节有一个地址
在内存中每一个字节有一个地址
一个字节由一个字节由88位二进制位组成
位二进制位组成
位操作是直接对二进制位进行的,位运算只适用于位操作是直接对二进制位进行的,位运算只适用于无符号整型变量无符号整型变量
0111110101111101最低位最高位9
2位运算符位运算符CC语言提供如下位运算符
其中除运算符语言提供如下位运算符
其中除运算符~~以外
都是二目运算符
都是二目运算符
运算符运算符语义语义&&按位与按位与||按位或按位或∧∧按位异或按位异或~~按位取反按位取反右移右移1
按位按位““与与””运算符运算符&&参加运算的两个运算量,如果对应二进制位参加运算的两个运算量,如果对应二进制位都是都是11,则该位的结果为,则该位的结果为11,否则该位是,否则该位是00
例例::用按位与操作实现宏用按位与操作实现宏is_oddis_odd,它判断某个,它判断某个整数是否为奇数整数是否为奇数::#defineis_odd(x)(#defineis_odd(x)(11&&(unsigned)(x))(unsigned)(x))也可以用按位与运算也可以用按位与运算屏蔽屏蔽掉某些二进制位,掉某些二进制位,如如::c=nc=n&&017701779
2位运算符位运算符2
按位按位““或或””运算符运算符||参与运算的两个运算量,如果对应二进制位都参与运算的两个运算量,如果对应二进制位都是是00,则该位的结果值为,则该位的结果值为00,否则该位的结果值是,否则该位的结果值是11
按位或运算用来对一个数据的某些二进制位置按位或运算用来对一个数据的某些二进制位置11
例如例如::xx||MASKMASK