一、位运算符分类
运算符 | 含义 | 运算符 | 含义 |
& | 按位与 | ~ | 取反 |
| | 按位或 | << | 左移 |
^ | 按异或 | >> | 右移 |
说明:
(1)位运算中除~以外,均为二目运算符,即要求两侧各有一个运算量。
(2)运算量只能是整型或字符型数据,不能是实型数据。
二、位运算符的分类介绍
1、“按位与”运算符 &
即参与运算的两个数据,按二进制位进行“与”运算。二进制位一一对应,有0即为0,同时为1才时1。
列如,十进制3&5的值不等于8而是等于1。
如果参加&运算的是负数(如-3 & -5),则以补码形式表示为二进制数,然后在按位进行“与”运算。
按位与的运用:(1)清零(2)取一个数中某些指定位数
2、“按位或”运算符 |
两个相应的二进制位中只要有一个为1,该位结果值为1。有1即为1
列如,十进制9 | 6的值为15
3、“按位异或”运算符 ^
若参加运算的两个二进制位同号,则结果为0,异号则结果为1。即同为0异为1。
列如,十进制的57^42值为19
按位与运算的运用:
(1)使特定数字翻转
(2)与0相^,保留原值
(3)交换两个值,不用零时变量
列如a=3,b=4,想交换a和b的值,可用以下赋值语句实现:a=a^b;b=b^a;a=a^b;
4、“取反”运算符 ~
~是单目运算符,用来对二进制数按位取反,即将0变1,1变0。
5、 左移运算符 <<
用于将一个数的各二进制位全部左移若干位。
列如:a=a<<2,即将a的二进制数左移2位,右补0。
运算法则:高位左移后溢出,舍弃,右补0。
注意:左移时被溢出的舍弃的高位中不包含1的情况下,左移一位相当于该数乘以2,左移2位相当于该数乘以2的2次方,依次类推。
6、 右移运算符 >>
a>>2表示将a的各二进制位右移2位。
运算法则:移到右端的地位被舍弃,对无符号数,高位补0。对于有符号数,高位移入0还是1就要根据系统来定,有的系统移入0,有的系统移入1。移入0的称为“逻辑右移”,即简单右移;移入1的称为“算术右移”。
注意:右移一位相当于除以2,右移n位相当于除以2的n次方。