关于位运算的一些简单技巧

本文介绍了位运算的一些简单技巧和奇淫技巧,包括与、或、非、异或、左移和右移的操作。提到了在Java中无符号右移和有符号右移的区别,并指出算术右移在某些情况下可替代除法运算。还讨论了如何利用位运算判断偶数、交换数值、找到2的幂次方、计算二进制中1的个数等,并提供了LeetCode相关问题的解题思路。
摘要由CSDN通过智能技术生成

关于位运算的一些简单技巧

位运算

与、或、非、异或、左移

右移:

无符号右移: >>> 高位补0

有符号右移: >>

  • 逻辑右移: 高位补0
  • 算术右移: 高位补符号位。

在 Java 中,明确规定了:

  • 逻辑右移:>>> 补0

  • 算术右移:>> 补符号位

    因为可以代替除法运算,算术右移一位相当于 除以 2, 高位补符号位就还是负数,补0就是正数了。。
    (也可以对对比着: 左移右移一位,在十进制中,也会相应的乘10 或 除10 运算。)
    在这里插入图片描述

奇淫技巧

  1. x & 1 == 1 , 判断偶数。。。
    在这里插入图片描述

  2. 不使用第三方变量,交换2个数: 使用 异或。。。。(但注意不要在数组中这样用。。。直接改变值了。)

  3. x & (x - 1) ,可以将最右边一位的1(不一定是所

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值