<>C语言位运算符主要包括六种:与( & )、或( | )、异或( ^ )、取反( ~ )、左移( >> )和右移( << )
运算符含义描述
&按位与如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
I按位或两个相应的二进制位中只要有一个为1,该位的结果值为1
^按位异或若参加运算的两个二进制位值相同则为0,否则为1
~取反~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0
<<左移用来将一个数的各二进制位全部左移N位,右补0
>>右移将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0
<>1.与运算(&)
参加运算的两个数据,按二进制位进行“与”运算。
运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
即:两位同时为“1”,结果才为“1”,否则为0
例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值得1。
两个数与的结果一定是比任意两个数都小,换句话说,越与数越小
<>2.或运算(|)
参加运算的两个对象,按二进制位进行“或”运算。
运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;
即 :参加运算的两个对象只要有一个为1,其值为1。
例如:3|5 即 0000 0011 | 0000 0101 = 0000 0111 因此,3|5的值得7。
两个数或的结果一定是大于其中的任意一个数,换句话说,越或数越大
<>3.异或运算(^)
参加运算的两个数据,按二进制位进行“异或”运算。
运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;
即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。
例如:9^5可写成算式如下: 00001001^00000101=00001100 可见9^5=12
<>4.取反运算(~)
参加运算的数据,按二进制位进行“取反”运算。
运算规则:~0=1; ~1=0;
即:参与运算的数据,对应的二进制取反后 0 变成 1 ,1 变成 0 。
例如: 3 :00000011 ; ~3 :11111100 = 252
<>5.左移运算(<<)
参与运算的数据,二进制全部向左移动 n 位,左边舍去,右边补 0
运算规则:00000101 << 1 = 00001010
即:参与运算的数据,对应的二进制位向左移动 n 位,左边舍去,右边补 0 。
例如:2 << 1 = 4 ; 00000010 << 1 = 00000100
左移一位相当于乘以 2
<>6.右移运算(>>)
参与运算的数据,二进制全部向右移动 n 位,右边舍去,左边补 0
运算规则:00000101 >> 1 = 00000010
即:参与运算的数据,对应的二进制位向右移动 n 位,右边舍去,左边补 0 。
例如 :2 >> 1 = 1 ; 00000010 >> 1 = 00000001
右移一位相当于除以 2