是的,只需使用掩码依次测试每个位.对于整数,有32个可能的位.
幸运的是java为您提供:
Integer.bitCount(value)
Run Code Online (Sandbox Code Playgroud)
如果你想自己做:
int value = Integer.parseInt("1000101010", 2);
int bitCounter = 0;
for (int i = 0; i < Integer.SIZE; i++) {
if (((1 << i) & value) > 0) {
bitCounter++;
}
}
System.out.println(value + " has " + bitCounter + " bits");
Run Code Online (Sandbox Code Playgroud)
产量
554 has 4 bits
Run Code Online (Sandbox Code Playgroud)
如果您想要"长度",即0或1的数量......
转换为字符串并查找长度
System.out.println(Integer.toString(value, 2).length());
Run Code Online (Sandbox Code Playgroud)
使用一些数学知识来获取值的基数(2).
double valueUnsigned;
if (value < 0) {
valueUnsigned = (value & 0x7FFFFFF) + 0x80000000l;
} else {
valueUnsigned = value;
}
System.out.println("Maths solution " + Math.floor(1d + Math.log(valueUnsigned) / Math.log(2)));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |