一、“按位与”运算符(&)
1、运算规则
参加运算的两个数据,按二进位进行“与”运算,如果两个相应的二进位都为1,则该位的结果值为1,否则为0,即:
0&0=0,0&1=0,1&0=0,1&1=1.
2、用途
(1)清零
运算对象:原来的数中为1的位,新数中相应位为0。
(2)取一个数中某些指定位。
如想要取一个整数a(占4个字节)的低(高)字节,只需将a与十六进制的0x0000FFFF(0xFFFF0000)按位与即可。
(3)保留某一个数的某些位。
与一个数进行&运算,此数在该位取1。
二、 按位或运算符(|)
1、运算规则
参加运算的两个数据,按二进位进行“或”运算,如果两个相应的二进位都为0,则该位的结果值为0,否则为1,即:
0|0=0,0|1=1,1|0=1,1|1=1。
2、用途
对一个数据的某些位定值为1。
三、“异或”运算符(^)
也称XOR运算符。
1、运算规则
若参加运算的两个二进位同号,则结果为0(假);异号则为1(真),即:
0^0=0,0^1=1,1^0=1,1^1=0.
2、用途
(1)使特定位翻转
假设有01111010,想使其低4位翻转,可以将它与00001111进行^运算。
(2)与0相^,保留原值
(3)交换两个值,不用临时变量
假如a=3,b=4。想将a和b的值互换,可以用以下赋值语句实现:
a=a^b; b=b^a; a=a^b;
(4)在汇编语言中将变量置0
xor a a;
(5)快速判断两个值是否相等
return ( (a^b) == 0 )
四、 左移运算符(<<)
1、运算规则
用来将一个数的各二进位全部左移若干位,右补0,高位左移后溢出,舍弃不起作用。
2、用途
左移一位相当于乘以2。
五、右移运算符(>>)
1、运算规则
用来将一个数的各二进位全部右移若干位,移到右端的低位被舍弃,对无符号数,高位补0;
对有符号数,左边移入0(“逻辑右移”)或1(“算术右移”)
2、用途
(1)右移一位相当于除以2。
(2)计算平均值
( x&y ) + ( (x^y)>>1 )
1、运算规则
参加运算的两个数据,按二进位进行“与”运算,如果两个相应的二进位都为1,则该位的结果值为1,否则为0,即:
0&0=0,0&1=0,1&0=0,1&1=1.
2、用途
(1)清零
运算对象:原来的数中为1的位,新数中相应位为0。
(2)取一个数中某些指定位。
如想要取一个整数a(占4个字节)的低(高)字节,只需将a与十六进制的0x0000FFFF(0xFFFF0000)按位与即可。
(3)保留某一个数的某些位。
与一个数进行&运算,此数在该位取1。
二、 按位或运算符(|)
1、运算规则
参加运算的两个数据,按二进位进行“或”运算,如果两个相应的二进位都为0,则该位的结果值为0,否则为1,即:
0|0=0,0|1=1,1|0=1,1|1=1。
2、用途
对一个数据的某些位定值为1。
三、“异或”运算符(^)
也称XOR运算符。
1、运算规则
若参加运算的两个二进位同号,则结果为0(假);异号则为1(真),即:
0^0=0,0^1=1,1^0=1,1^1=0.
2、用途
(1)使特定位翻转
假设有01111010,想使其低4位翻转,可以将它与00001111进行^运算。
(2)与0相^,保留原值
(3)交换两个值,不用临时变量
假如a=3,b=4。想将a和b的值互换,可以用以下赋值语句实现:
a=a^b; b=b^a; a=a^b;
(4)在汇编语言中将变量置0
xor a a;
(5)快速判断两个值是否相等
return ( (a^b) == 0 )
四、 左移运算符(<<)
1、运算规则
用来将一个数的各二进位全部左移若干位,右补0,高位左移后溢出,舍弃不起作用。
2、用途
左移一位相当于乘以2。
五、右移运算符(>>)
1、运算规则
用来将一个数的各二进位全部右移若干位,移到右端的低位被舍弃,对无符号数,高位补0;
对有符号数,左边移入0(“逻辑右移”)或1(“算术右移”)
2、用途
(1)右移一位相当于除以2。
(2)计算平均值
( x&y ) + ( (x^y)>>1 )