| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 626 人关注过本帖
标题:寻求移位算法
只看楼主 加入收藏
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
快速回复:寻求移位算法
数据加载中...
 
   



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

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