Count the number of 1s in an binary integer
Solution
int oneInBinaryInt(int num) {
int cnt = 0;
int mask = 1;
while (num > 0) {
if (num & mask) {//'1' is the last digit
cnt++;
}
num = num >> 1; //num/2, check next digit
}
return cnt;
}
上述的方法是不能应用于负数的情况的。。。下面这个是更general的方法:
int countOnes(int input){
int count = 0;
for (int i = 0; i<32; i++){
if ((input & 1) != 0) count++;
input >>= 1;
}
return count;
}
下面是int to binary和binary to int的方法
//
string binaryString(int num) {
string b_str="";
int mask = 1;
while (num > 0) {
char c = num&mask ? '1' : '0';
b_str.push_back(c);
num = num >> 1;
}
reverse(b_str.begin(), b_str.end());
return b_str;
}
int binaryInt(string s) {
int num = 0;
for (int i = 0; i < s.length(); i++) {
if (s[i] == '1') {
num += (1 << (s.length() - i - 1));
}
}
return num;
}
同样上面的方法也是没有考虑到负数的。。。
string binaryString(int num) {
string b_str="";
int mask = 1;
for(int i=0; i<32; i++ {
char c = num&mask ? '1' : '0';
b_str.push_back(c);
num = num >> 1;
}
reverse(b_str.begin(), b_str.end());
return b_str;
}
但是这样改了以后吧,如果是整数的话前面会有好多的0.。。