相关疑难解决方法(0)

这个位操作在Java中如何工作?

我正在研究Java如何计算int的位集.
在我的脑海里,我有一些简单的东西(我认为是正确的):

public static int bitCount(int number){  
        final int MASK = 0x1;  
        int count = 0;  

        for(int i = 0; i < 32; i++){  
            if(((number >>> i) & MASK) == MASK){  
                count++;  
            }  
        }  
        return count;  
    }  
Run Code Online (Sandbox Code Playgroud)

相反,我找到了一种方法,我完全不知道在做什么(对我来说似乎很神奇):

 i = i - ((i >>> 1) & 0x55555555);  
 i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);  
 i = (i + (i >>> 4)) & 0x0f0f0f0f;  
 i = i + (i >>> 8);  
 i = i + (i >>> …
Run Code Online (Sandbox Code Playgroud)

java integer bit-manipulation

8
推荐指数
1
解决办法
1187
查看次数

标签 统计

bit-manipulation ×1

integer ×1

java ×1