如何计算某char变量bit位为1的总数目?
来源:互联网 发布:淘宝网休闲套装 编辑:程序博客网 时间:2024/04/29 19:56
如何计算某char变量bit位为1的总数目?
比如:
char c = 'a';
而'a'二进制是01100001,所以起bit位为1的总数目是3。
请问这个如何实现?谢谢。
据说还可以有空间优化和时间优化等不同实现?
-------------eGust (就像矗立在彩虹之巅)-------------
比起
x = (x & 0x55) + ((x >> 1) & 0x55);
x = (x & 0x33) + ((x >> 2) & 0x33);
x = (x & 0x0F) + ((x >> 4) & 0x0F);
来,应该也不会慢吧,这个毕竟要进行15次以上的运算,虽然都是在寄存器里弄
查表只要一条指令就够了,就算没有cache上应该不会慢这么多吧,而且多次访问的话应该更快才对
x86好像也没有直接数的指令
-------------vonNeumann (沉默的大多数)-------------
如果只是偶尔调用一次,应该 eGust 那个更快吧。如果频繁调用,估计查表快。我猜的。
原理:
假设原数是 [abcdefgh],每一个字母代表 0 或 1,要求的是 a+b+c+d+e+f+g+h
第一步以后,变成 [a+b][c+d][e+f][g+h],每个方括号 2 bits
第二步以后,变成 [a+b+c+d] [e+f+g+h],每个方括号 4 bits
第三步以后,[a+b+c+d+e+f+g+h]
- 如何计算某char变量bit位为1的总数目?
- 如何计算某char变量bit位为1的总数目?
- 求一个数被置为1的bit数目
- 计算一个无符整数中bit位为1的个数
- 如何将CSting字符串转成独立的以8bit为单位的unsigned char字符
- Fast bit count问题(即计算一个unsigned int的二进制表达中1的数目)
- Fast bit count问题(即计算一个unsigned int的二进制表达中1的数目)
- 计算某正整数换算成二进制后bit为1的个数
- 计算n bit的整数中有多少bit 为1
- 如何快速判断一个正整数中只有一个BIT位为1
- 计算牛的数目
- 位计算(Bit Count)
- 如何确定Oracle是32 Bit(位)的还是64 Bit(位)的
- Oracle HowTo:如何确定Oracle是32 Bit(位)的还是64 Bit(位)的?
- 整形变量中位为1的个数
- 计算x中有多少个为1的位
- 关于计算字节位为1的一个问题
- 【C语言】实现对一个8bit数据(unsigned char)类型的指定位的置0或置1操作,并保持其他位不变
- 如何计算某char变量bit位为1的总数目?
- 随路信令CAS共路信令CCS
- 使用Linux的NFS做目录映射
- SWT(JFace)体验之复制粘贴
- SWT(JFace)体验之打印功能
- 如何计算某char变量bit位为1的总数目?
- _variant_t ,_bstr_t 与 CString 类区别
- 用户控件路径的解决方案
- 验证控件和javascript冲突的解决办法
- JDBC 数据源和连接池
- oracle事务管理相关问题总结
- SWT(JFace)体验之拖曳效果
- Exchange 2003 用Merge工具删除邮件
- 飞鸽源码分析之一——MsgMng::WSockInit