public class BinaryTest {
public static void main(String[] args) {
System.out.println(countNum(10));
System.out.println(countNum2(10));
System.out.println(countNum3(10));
}
private static int countNum(int v){
int num = 0;
while(v != 0){
if(v % 2 == 1)
num++;
v = v / 2;
}
return num;
}
private static int countNum2(int v) {
int num = 0;
while(v != 0){
num += v & 1;
v >>=1;
}
return num;
}
private static int countNum3(int v) {
int num = 0;
while(v != 0){
v &= (v-1);
num++;
}
return num;
}
}
public static void main(String[] args) {
System.out.println(countNum(10));
System.out.println(countNum2(10));
System.out.println(countNum3(10));
}
private static int countNum(int v){
int num = 0;
while(v != 0){
if(v % 2 == 1)
num++;
v = v / 2;
}
return num;
}
private static int countNum2(int v) {
int num = 0;
while(v != 0){
num += v & 1;
v >>=1;
}
return num;
}
private static int countNum3(int v) {
int num = 0;
while(v != 0){
v &= (v-1);
num++;
}
return num;
}
}
这篇博客探讨了如何高效地计算一个8位变量(字节)的二进制表示中1的个数,提供了三种不同的算法实现:通过除法和取余、位操作符按位与和右移、以及位操作符按位与和减1。这些方法旨在优化执行效率。
的变量,求其二进制表示中1的个数,要求算法的执行效率尽可能地高。&spm=1001.2101.3001.5002&articleId=43447289&d=1&t=3&u=9f3b7aaa277a48af84882032556a4f1d)
3046

被折叠的 条评论
为什么被折叠?



