ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

n & (n - 1)的用处

2022-06-09 19:07:10  阅读:137  来源: 互联网

标签:count 10 int 1111010 二进制 用处


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;
    }
    
  • 参考:

标签:count,10,int,1111010,二进制,用处
来源: https://www.cnblogs.com/wftop1/p/16360774.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有