iOS 算法~分段截取常数
来源:互联网 发布:java泛型和集合 中文 编辑:程序博客网 时间:2024/05/24 07:07
//联系人:石虎 QQ:1224614774 昵称:嗡嘛呢叭咪哄
一、错位分段相加,递归合并的过程
#include<stdio.h>
int Hamming_weight_3( int n )
{
n = (n&0x55555555) + ((n>>1)&0x55555555);
n = (n&0x33333333) + ((n>>2)&0x33333333);
n = (n&0x0f0f0f0f) + ((n>>4)&0x0f0f0f0f);
n = (n&0x00ff00ff) + ((n>>8)&0x00ff00ff);
n = (n&0x0000ffff) + ((n>>16)&0x0000ffff);
return n;
}
int main()
{
int n;
while ( scanf("%d", &n) !=EOF ) //读入整数和打印1的个数
{
printf("%d \n",Hamming_weight_3( n ));
}
return 0;
}
二、细节分析:
1.数字都有什么特点:
0x5555……这个换成二进制之后就是0101010101010101……
0x3333……这个换成二进制之后就是0011001100110011……
0x0f0f……...这个换成二进制之后就是0000111100001111……
2.如果把这些二进制序列看作一个循环的周期序列的话,那么第一个序列的周期是2,每个周期是01,第二个序列的周期是4,每个周期是0011,第三个的周期是8,每个是00001111……
3.这些玩意相与之后的结果:
整个数按照上述的周期被分成了n段,每段里面的前半截都被清零,后半截保留了数据。不同在于这些数分段的长度是2倍增长的。于是我们可以姑且命名它们为“分段截取常数”。
谢谢!!!
- iOS 算法~分段截取常数
- 字符串分段拆分截取
- MSSQL字符串分段截取
- sqlserver 分段截取字符串
- SQL 分段截取函数
- 字符串分段截取应用实例
- Matlab将视频分段截取
- 算法时间复杂度-常数阶
- Truncation Stream (数据截取,分段导入)
- ios中的任务分段
- iOS 文件分段下载
- ios开发--UISegmentedControl分段
- iOS分段控制器
- IOS UISegmentedControl 分段控制器
- iOS UISegmentedControl分段按钮
- iOS--分段控件UISegmentedControl
- iOS文件分段下载
- ios 分段控制器
- Python数据分析模块 | pandas做数据分析(二):常用预处理操作
- Mac版的vmware Fusion 8如何导入windows版vmware workstation创建的虚拟机
- 模板方法设计模式
- 数据结构总结之lca
- Java类加载之热替换
- iOS 算法~分段截取常数
- 银行卡识别
- EL函数库
- 利用 c++模板 类型 推导思想,实现最简单的 判断两个类型 是否一样的 方法
- java基础知识穿插:类装载器;反射
- zookeeper 技术学习方法
- Java transient关键字
- ImageButton点击替换背景再次点击显示默认图片
- Python数据分析模块 | pandas做数据分析(三):统计相关函数