C语言中的位运算

C语言中的位运算有六个:按位与(&),按位或(|),按位异或(^),取反(~),左移(<<),右移(>>)。除~以外其余均为二元运算符,即要求运算符两侧均有一个运算量;位运算量只能为整型或字符型,不能为实型数据。

1.按位与&

   0&0=0 0&1=0 1&0=0   1&1=1;

   3&5=(00000011)&(00000101)=00000001=1

   &的特殊用途有以下:

(1)清零。如原有数00101011,则另找一数(不一定唯一)10010100与原来的数进行&运算即得结果0。

   (2)取一个数中某些指定的位。

   (3)保留某些位数。

2.按位或|

    0|0=0 0|1=1 1|0=1 1|1=1

例如求067|017

将八进制数60与八进制数17进行按位或运算得00110000|00001111=00111111.

3.按位异或^

   0^0=0   0^1=1 1^0=1   1^1=0

按位异或有以下用途:

   (1)使特定位翻转,只需取好值即可。

(2)与0相^保留原值。

(3)交换两个值而不必采用临时变量。交换a和b:a=a^b;b=b^a;a=a^b。

4.取反~

   使各位0变为1,变为0

5.左移<<

左移比乘法运算快得多,有些系统自动将乘以2用左移一位来实现。

6.右移>>

a>>2表示将a的各位右移2位。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值