<<,有符号左移位,将运算数的二进制整体左移指定位数,低位用0补齐。
>>>,无符号右移位,不管正数还是负数,高位都用0补齐(忽略符号位)
题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
class Solution {
public:
int NumberOf1(int n) {
int sum=0;
int index=1;
while(index!=0){
if((index&n)!=0){ //二进制每有一位为1
sum++;
}
index=index<<1; //1的二进制左移一位
}
return sum;
}
};
博客介绍了有符号左移位(<<)和无符号右移位(>>>)的运算规则,前者将运算数二进制整体左移指定位数,低位补0;后者高位用0补齐。还给出题目,要求输入一个整数,输出该数二进制表示中1的个数,负数用补码表示。
340

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



