第十一章:位运算符与位运算

第十一章:位运算符与位运算

位运算将表达式或变量的值看成二进制数,对于它的每个二进制位逐位进行运算,所以不能用于float、double、long double、void或更复杂的数据类型,即只能用于整型、字符型数据等。

在这里插入图片描述

1.按位与运算:&
  • 作用:位逻辑与运算,参与运算的两个操作数按二进制位进行逻辑与运算

  • 运算规律:全1为1

注意:参与运算的两运算数据先转换成补码形式,再进行位运算

  • 用途:
    • 清零:找到合适的二进制数,原来的数为1的位,新数中相应的位为0.
    • 取一个数中的某些指定位
      • 一个short a ,若取高字节,则与0177400进行位与运算,特点:高字节全为1,低字节全为0
      • 若取低字节,则与0377进行位与运算,特点:高字节全为0,低字节全为1
2.按位或运算:|
  • 作用:将两个操作数对应的每一位分别进行逻辑或操作
  • 规律:全0为0
0|0=0,0|1=1,1|0=1,1|1=1
3.按位异或运算:^
  • 作用:将两个操作数对应的每一位进行异或操作
  • 规则:两个数对应的二进制位__相同为0,相异为1__
0^0=0  0^1=1  1^0=1  1^1=1
  • 用途:

    • 使特定位翻转:一个数若想使其某些特定位翻转,则与一个数相异或,使该数对应位全为1
    若oxfa位翻转
        11111010
    (^) 00001111
    --> 11110101
    
    • 与0相^,保留原值
    x0x35^0   
       00110101
    (^)00000000
    -->00110101
    

    与0相保留原位,与1相翻转

    • 用来清0:一个整数与其自身进行异或运算,结果必为0, a^a=0

    • 交换两个值,不用临时变量

    a=a^b;
    b=b^a;
    a=a^b;
    
           a=01              b=10               a=11
           b=10              a=11               b=01
    (a^b)  a=11       (b^a)  b=01        (a^b)  a=10
    
4.取反运算符:~
  • 作用:用来求表达式或变量的反码
  • 运算规律:为单目运算符,将一个二进制数按位取反,即将1变为0,将0变为1
  • 应用:增加程序的移植性
eg:
若将一个变量x的低四位清零,对于不同数据的变量应选用不同的操作数,即
对于char x,y  应写作:y=x&0xf0

注意:位运算符除了~外,均为双目运算符,要求两侧各有一个一个运算量

5.左移运算符:<<
  • 作用:将一个数的二进制位全部左移若干位

  • 左移1相当于该数×2

  • 左移高位舍弃0:相当于乘2的n次幂

6.右移运算符:>>
  • 作用:将一个数的二进制位全部右移若干位
  • 规则:

在这里插入图片描述

总结

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蛰伏GR

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值