按位运算 & 、|、^、~

来源:互联网 发布:js 获取get参数 编辑:程序博客网 时间:2024/06/16 00:00

& 按位与

| 按位或

^ 按位异或
~按位取反

运算量只能是整型或字符型的数据,不能为实型数据。

1. 按位与 双目运算符

对应两个二进位均为1时,结果位为1,否则为0。

参与运算的数以补码方式出现。 

例如:6&5 :

  00000110 (6的二进制补码)

&00000101 (5的二进制补码)=

  00000100 (1的二进制补码)

可见6&5=4。 

int main()

int a=6,b=5,c; 
c=a&b; 

printf(" a=%d\n b=%d\n c=%d\n",a,b,c); 


2. 按位或 双目运算符。

只要对应的两个二进位有一个为1,结果位就为1。

参与运算的两个数均以补码出现。 

例如:6|5 :

 00000110

|00000101 

 00000111 (7)

可见6|5=7

int main()

int a=6,b=5,c; 

c=a|b; 

printf(" a=%d\n b=%d\n c=%d\n",a,b,c); 



3. 按位异或 双目运算符。

当两对应的二进位相异时,结果为1。

参与运算的数以补码形式出现。

例如6^5 :

 00000110

^00000101 =

 00000011 (3) 

int main()
int a=6,b=5,c; 

c=a^b; 

printf(" a=%d\n b=%d\n c=%d\n",a,b,c); 

}

4.按位取反 单目运算符。

假设有一个数~9,计算步骤如下:

9=1001 ,

其补码为01001, 


对其取反10110(每一位,包括符号位均取与原来相反的数),这个数是在内存中存放的,现在需要转换成原码,即先减1,然后取其反码得

11010,符号位为1是负数,即 -10 


按位取反规律:假设有一个数a,则
~a=-(a+1)
可以通过以下代码验证:
main()
{


int a=-2313,c,d; 
c=~a; 
d=-(a+1);
printf("a=%d\n  c=%d\n d=%d\n",a,c,d); 
}

0 0
原创粉丝点击