概念
■位运算是指按二进制位进行的运算。因为在系统软件中,常要处理二进制位的问题。
■例如:将一个存储单元中的各二进制位左移或右移位,两个数按位相加等。
■C语言提供位运算的功能,与其他高级语言(如PASCAL)相比,具有很大的优越性。
位运算符和位运算
(1)位运算符中除~以外,均为二目(元)运算符,即要求两侧各有一个运算量。
■(2)运算量只能是整型或字符型的数据,不能为实型数据。
“按位与”运算符(&)
.含义:参加运算的两个数据,按二进制。位进行“与”运算。
如果两个相应的二进制位都为|,则该位的结果值为| ; 否则为0。
.例如:
0&0= 0,0&1= 0
1 &0=0,1&1=1
“按位与”运算符(&)
■注意:
3&5并不等于8,应该是按位与运算:
00000011 (3)& 00000101 (5)00000001 (1)
如果叁加&运算的是负数(如-3&-5), 则要以补码形式表示为二进制数,然后再按位进行“与”运算。
按位与运算的用途
清零
■若想对一个存储单元清零,即使其全部二进制位为0,只要找一个二进制数,其中各个位符合以下条件:原来的数中为|的位,新数中相应位为O。然后使二者进行&运算,即可达到清零目的。
■例如:要求将二进制数11100101的第2位清零
“按位或”运算符( | )
两个相应的二进制位中只要有一个为|,该位的结果值为|。
即:
0|0=0 , 0|1= 1,
1|0=1,1|1=1
■例如:
001 10000000011110021111
“异或”运算符( ^)
异或运算符^ 也称XOR运算符。它的规则是:
若叁加运算的两个二进制位同号则结 果为O(假), 异号则结果为| (真)
即:0^ 0=0,0^ 1=1,1^ 0=1,1^1=0例如:
00111001
00101010
——————
00010011