n & (n - 1)的用处

n & (n - 1)的用处#

  • 用处:将二进制数的最后一个1的所在位变成0

  • 举例

    • 假设n = 122,二级制数为1111010
    • 那么n - 1 = 121,二进制数1111001
    • n & (n - 1) = 122 & 121 =1111010 & 1111001 = 1111000
    • 此时就把1111010的最后一位的1,也就是10变成了00
  • 原理:对于10,减1之后变成了01,刚好与10所有位相反,10 & 01 = 00

  • 使用场景:常用来计算一个数的二进制数,有多少个1

    public int bitCount(int n){
        int count = 0;
    	while(n != 0){
            //每次将最后的1转成0的时候count都加1
            n &= n-1;
            count++;
        }
        return count;
    }
    
  • 参考:

posted @   FynnWang  阅读(656)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示