位运算

程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。
####运算符号

按位与         &        a&b
按位或         |        a|b
按位异或       ^        a^b
按位取反       ~         ~a
左移          <<        a<<b
右移          >>        a>>b

#####按位与运算
与运算就是将两个数据,按照对应的二进制数逐位进行逻辑与运算,相同位的两个数字都为1,则为1;若有一个不为1,则为0。

        11010
     &  10110
        10010

通常可以用&1来判断一个数的奇偶。

#####按位或运算
或运算就是将两个数据,按照对应的二进制数逐位进行逻辑与运算,相同位的两个数字都为0,则为0;若有一个为1,则为1。

        11010
     |  10110
        11110


#####按位异或运算
异或运算就是将两个数据,按照对应的二进制数逐位进行逻辑异或运算,相同位的两个数字相同,则为0;不同,则为1。可以用于将二进制数中的某一位取反。

        11010
     ^  10110
        01100

下面的运算可以实现两个数的交换

        a=a^b;
        b=a^b;
        a=a^b;


#####按位取反运算
取反运算就是将一个数据,按照对应的二进制数逐位进行逻辑取反运算,即0变为1,1变为0;进行此运算时,要特别注意数据的符号,如果为负,要转换为其补码。补码=符号位(最高位)以后按位取反再加1。

                    就以-1为例
二进制 :1000 0000 0000 0000 0000 0000 0000 0001 
补  码 :1111 1111 1111 1111 1111 1111 1111 1111

      ~  11010
         00101


#####左移运算
a << b就表示把a转为二进制后左移b位(在后面添b个0)。a << b的值就是a乘以2的b次方,

     1100100<<2   十进制为100
     110010000    十进制为400


#####右移运算
a >> b表示二进制右移b位(去掉末b位),相当于a除以2的b次方(取整)。

     1100100>>2   十进制为100
       11001      十进制为25


#####运算优先级

     1       ~
     2      <<、>>
     3       &
     4       ^
     5       |

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值