获取尾随的1位数

获取尾随的1位数,第1张

获取尾随的1位数

从伊格纳西奥·巴斯克斯(Ignacio Vazquez-Abrams)那里得到答案,并用计数而不是表格来完成:

b =〜i&(i + 1); //这在尾随的1的左侧给出1b--; //这使我们只需要计算尾随的1b =(b&0x55555555)+((b >> 1)&0x55555555); // 1位数字的2位和b =(b&0x33333333)+((b >> 2)&0x33333333); // 2位数字的4位和b =(b&0x0f0f0f0f)+((b >> 4)&0x0f0f0f0f); // 8位和4位数字b =(b&0x00ff00ff)+((b >> 8)&0x00ff00ff); // 8位数字的16位和b =(b&0x0000ffff)+((b >> 16)&0x0000ffff); // 16位数字的总和

b的末尾将包含1的计数(掩码,加法和移位计数1)。除非我当然喜欢。使用前进行测试。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5560415.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存