速度最快的位运算符

位运算符:用于二进制运算,位运算符的速度最快

左移右移无符号移异或取反
<<>>>>>&|^~

以左移位运算<<为例,计算3<<2

  • 先从十进制int类型(32位)转换为二进制,
    3(10) = 0000-0000 0000-0000 0000-0000 0000-0011(2)
  • 将整个二进制向左移两位,
    在这里插入图片描述
    位移后,红线后的0为第一位,此时一共30位,所以在末尾不上两个0,补齐后二进制表现如下,

在这里插入图片描述

  • 此时0000-0000 0000-0000 0000-0000 0000-1100(2) = 12(10)
    因此 3<<2 = 12

二进制向左移,其实就相当于所有数字移动到前一个高位上,位移几位,就是乘以2的几次幂。

位运算算式对应的乘法表现形式
3 << 1 = 63*21
3 << 2 = 123*22
3 << 3 = 243*23

右移同理,相当于除以2的几次幂。
右移时,最前面补的数按最高位来确定,即正数补0,负数补1
0000…0110 = 6
1111…1010 = -6

当使用无符号位移>>>符,无论正负数,前面都以0补齐,所以无符号位移后的数一定是非负数。

以&为例计算6&3

  • 将6和3转换为二进制,
    6(10) = 110(2)
    3(10) = 011(2)
  • 每一位二进制数都&计算
    在这里插入图片描述
    将0看作false,1看作true,false&true = false ,最右为0,依次计算,得结果010,转换为十进制为2。
    因此6 & 3 = 2

或|和异或^同理
一个数异或同一个数两次,结果还是原来的数
例如,
7 ^ 4 = 3
7 ^ 4 ^ 4 = 7

以~6为例计算

  • 将6转换为二进制,
    6(10) = 0000…0110 (2)

  • 取反,将0变成1,1变成0,再转换为十进制
    1111…1001 (2) = -7(10)
    因此~6 = -7

    可以利用取反后+1,来实现正数转负数的操作
    例如,~6+1 = -6

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值