提高程序效率,用&1代替%2,用>>1代替/2,cup做与或移位操作比做取模乘除操作更快

求int型正整数在内存中存储时1的个数

http://www.nowcoder.com/questionTerminal/440f16e490a0404786865e99c6ad91c9

#include <iostream>

using namespace std;

int main(){
    int x;
    cin>>x;
    short res=0;
    while(x){
        if(x&1){
            ++res;
        }
        x=x>>1;
    }
    cout<<res;
}
全部评论
这有问题的,C++中的默认是算数右移,也就是说当符号位为1(负数),那么右移默认补符号位。也有补0的,但是那是逻辑右移,不适合补码运算!
点赞 回复
分享
发布于 2020-11-08 00:30

相关推荐

2 收藏 评论
分享
牛客网
牛客企业服务