位运算怎么快速求0的个数呢 ?

。。。。。。。。。。。。
全部评论
我想到的是可以用x&(x-1)先求1的个数,然后用算占的总位数相减
点赞 回复 分享
发布于 2016-11-21 21:23
int main(){ int n = 0, ans = 0; cin >> n; ans = 0; while (n + 1){ ans++; n = n | (n + 1); } cout << ans << endl; return 0; }
点赞 回复 分享
发布于 2016-11-22 14:47
int pop(unsigned x) { x = x - ((x >> 1) & 0x55555555); x = (x & 0x33333333) + ((x >> 2) & 0x33333333); x = (x + (x >> 4)) & 0x0F0F0F0F; x = x + (x >> 8); x = x + (x >> 16); return x & 0x0000003F; }
点赞 回复 分享
发布于 2016-11-21 19:55
最快的方法是问出题人答案是什么。
点赞 回复 分享
发布于 2016-11-24 16:32
最快方法是分段然后打表
点赞 回复 分享
发布于 2016-11-21 22:13

相关推荐

评论
点赞
收藏
分享

创作者周榜

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