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

相关推荐

05-01 22:41
中南大学 Java
点赞 评论 收藏
分享
完美的潜伏者许愿简历通过:我上表jd,请求封我做后端大将军的事,北京有消息了:竟然不许!!! 他们一定是看我没有实习,这才故意驳回我的请求!
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务