(13)在 Java 中,使用位运算对余运算进行优化?【持续更新中......】

文章讨论了在Java编程中,如何利用位运算来提高代码执行效率。例如,使用(i+j)>>1替换(i+j)%2,以及在满足特定条件时,用位运算符来替代除法和取模运算。通过示例解释了位运算的原理,特别是对于二进制表示下的数值操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 Java 中,使用位运算的效率是比算数运算要快很多,在编写代码时,很多常见的算数运算可以使用位运算代替。

例如:

  1. 使用 (i + j) >>> 1 代替 (i + j) % 2

  2. 当求 x = m % n 时(n 不为0,并且 n = 2 ^ k ,k > 0),可以使用 x = m & (2^k - 1) 代替 ;

  3. 当求 x = m / n 时(n 不为0,并且 n = 2 ^ k ,k > 0),可以使用 x = m >>> k 代替 ;

说明:

1、(i + j) >>> 1 代替 (i + j) % 2 记住即可。

2【3】、查看下面规律就可以理解了

    /**
     * 89627 / 16 = 5601......11
     * 其中 89627,6501、11 的二进制代码如下
     *
     * 0001 0101 1110 0001 1011    【89627】
     * 0001 0101 1110 0001         【5601】
     * 1011                         【11】
     *
     *
     *
     * 635 / 4 = 158......3
     * 其中 635、158 和 3 的二进制格式如下
     *
     * 0010 0111 1011    【635】
     * 0010 0111 10      【158】
     * 0011              【3】
     */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值