按位运算 & 、|、^、~

& 按位与

| 按位或

^ 按位异或
~按位取反

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

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); 
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值