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

相关推荐

牛客ID:561366855:期望薪资多少?难以相信这简历找不到工作。说明二本电子信息专业想对口就业非常难。
点赞 评论 收藏
分享
ResourceUtilization:四六级不愧是大学最有用的证之一
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务