提高程序效率,用&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

相关推荐

头像
11-18 16:08
福州大学 Java
影流之主:干10年不被裁,我就能拿别人一年的钱了,日子有盼头了
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务