标题:寻求移位算法
只看楼主
sharp
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-5-3
 问题点数:0 回复次数:1 
寻求移位算法

有1整数N如:78 2进制:1001110
求一个比这个数大的数,且他的2进制1的个数和以知的N的个数一样
78 的是83 83的2进制:1010011
-----------------------------------------------------------------------------------
为了寻求更高的算法,用移位的速度较快,想否有人用移位写个

搜索更多相关主题的帖子: 算法 移位 进制 整数 速度 
2006-09-17 17:08
ww84020209
Rank: 1
等 级:新手上路
帖 子:190
专家分:0
注 册:2006-8-21
得分:0 
unsigned snoob(unsigned x) {
unsigned smallest, ripple, ones; // x = xxx0 1111 0000
smallest = x & -x; // 0000 0001 0000
ripple = x + smallest; // xxx1 0000 0000
ones = x ^ ripple; // 0001 1111 0000
ones = (ones >> 2)/smallest; // 0000 0000 0111
return ripple | ones; // xxx1 0000 0111
}

2006-09-17 17:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-90828-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.217251 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved