代码如下,调用func(0x11530828):

int func(unsigned int i) {
unsigned int temp = i;1:temp = (temp & 0x55555555) + ((temp & 0xaaaaaaaa) >> 1);2:temp = (temp & 0x33333333) + ((temp & 0xcccccccc) >> 2);3:temp = (temp & 0x0f0f0f0f) + ((temp & 0xf0f0f0f0) >> 4);4:temp = (temp & 0x00ff00ff) + ((temp & 0xff00ff00) >> 8);5:temp = (temp & 0x0000ffff) + ((temp & 0xffff0000) >> 16); return temp;}

对1、2、3、4、5整理,如下:

 1:temp = (temp & 0x55555555) + ((temp >> 1)& 0x55555555);2:temp = (temp & 0x33333333) + ((temp >> 2) & 0x33333333);3:temp = (temp & 0x0f0f0f0f) + ((temp >> 4) & 0x0f0f0f0f);4:temp = (temp & 0x00ff00ff) + ((temp >> 8) & 0x00ff00ff);5:temp = (temp & 0x0000ffff) + ((temp >> 16) & 0x0000ffff); 

输入:temp=0001 0001 0101 0011 0000 1000 0010 1000

序号1的代码等价于:将temp中32位二进制码,从低位到高位起,2位作为一个整体,对这个整体做第2位加第1位,总共会出现三种情况:10、01、11,相加后的结构分别为01、01、10,下面对temp进行上述规则处理:
原始数据:00 01 00 01 01 01 00 11 00 00 10 00 00 10 10 00
处理后的:00 01 00 01 01 01 00 10 00 00 01 00 00 01 01 00(运行代码1之后temp的值);

序号2的代码等价于:将temp中32位二进制码,从低位到高位起,4位作为一个整体,对这个整体做第4位加第2位、第3位加第1位,每次相加只会出现三种情况:10、01、11,相加后的结构分别为01、01、10,下面对temp进行上述规则处理:
处理前:0001 0001 0101 0010 0000 0100 0001 0100
处理后:0001 0001 0010 0010 0000 0001 0001 0001

序号3的代码等价于:将temp中32位二进制码,从低位到高位起,8位作为一个整体,对这个整体做第8位加第4位、第7位加第3位、第6位加第2位、第5位加第1位,每次相加只会出现三种情况:10、01、11,相加后的结构分别为01、01、10,下面对temp进行上述规则处理:
处理前:00010001 00100010 00000001 00010001
处理后:00000010 00000100 00000001 00000010

序号4的代码等价于:将temp中32位二进制码,从低位到高位起,16位作为一个整体,对这个整体做第16位加第8位、第15位加第7位、第14位加第6位、第13位加第5位、第12位加第4位、第11位加第3位、第10位加第2位、第9位加第1位,每次相加只会出现三种情况:10、01、11,相加后的结构分别为01、01、10,下面对temp进行上述规则处理:
处理前:0000001000000100 0000000100000010
处理后:0000000000000110 0000000000000011

同上,对于序号5的代码:
处理前:00000000000001100000000000000011
处理后:00000000000000000000000000001001
所以输出结果为:9。

temp = (temp 0x55555555) + ((temp 0xaaaaaaaa) 1)相关推荐

  1. python的0x55555555和0xaaaaaaaa

    仅作为记录,大佬请跳过. 参考 传送门

  2. python里面temp是啥-Python tempfile模块学习笔记(临时文件)

    tempfile.TemporaryFile 如何你的应用程序需要一个临时文件来存储数据,但不需要同其他程序共享,那么用TemporaryFile函数创建临时文件是最好的选择.其他的应用程序是无法找到 ...

  3. psql -d temp 时候的txid_current!

    这样就链接到了temp数据库了 ztz123@ubuntu:~$ psql -d temp psql (11.2) Type "help" for help.temp=# sele ...

  4. linux temp文件夹在哪_手机文件夹是英文不敢乱删?找出这5个文件夹,手机瞬间轻松6个G...

    很多朋友都想问,明明刚用没多久的手机,天天卡到怀疑人生,用手机清理软件里里外外清理了好几遍,还是没有任何改变.翻翻文件夹全是英文,又不敢随便清理,为啥国产手机文件夹全是英文,咱也不敢问,简直难过的想流 ...

  5. 清楚C盘中的临时文件user AppData Local Temp

    那是临时文件,全删了,没用的文件. 网上有一招可以帮你清理系统中的垃圾文件. 首先新建一个文本文档,然后打开 将以下代码复制进去保存: @echo off echo 正在清除系统垃圾文件,请稍等... ...

  6. 关于C盘的Temp里的垃圾文件如何清理!

    苦主诉说:C:\Documents and Settings\Administrator\Local Settings\Temp 里面的是垃圾文件生崽子的地方..其中有35个死垃圾文件删除不掉..超级 ...

  7. linux temp文件夹在哪_全方位剖析 Linux 操作系统,太全了

    Linux 简介 UNIX 是一个交互式系统,用于同时处理多进程和多用户同时在线.为什么要说 UNIX,那是因为 Linux 是由 UNIX 发展而来的,UNIX 是由程序员设计,它的主要服务对象也是 ...

  8. 疑难杂症篇(十五)--winXP下出现“安装向导无法创建文件夹‘C:\DOCUME~1\ADMIN~1\LOCALS~1\Temp\is-PCCET.tmp‘“问题的解决方案

    本博文将给出winXP系统下,出现"安装向导无法创建文件夹'C:\DOCUME~1\ADMIN~1\LOCALS~1\Temp\is-PCCET.tmp 错误82:无法创建目录或文件&quo ...

  9. 耐人寻味的Temp文件(三)

    temp是什么文件夹? Temp :临时文件夹   回答1. 临时文件夹.可以删除的在电脑屏幕的左下角按"开始→程序→附件→记事本",把下面的文字复制进去(黑色部分),点" ...

最新文章

  1. 软件工程采取了哪些措施以保证最终能够交付给用户一个高质量、低成本的软件产品?
  2. 创意三维c4d形式设计节气海报学习案例
  3. 解读:计数器Counter
  4. 实验4-1-2 求奇数和 (15 分)
  5. 营销再好终归还要产品说话,留给大神X7的时间不多了
  6. Qt的QPushButton设置图标,设置一组互斥键
  7. 桌球小游戏(java)编程
  8. C#窗体标准计算器(上) 初级新手请多担待。
  9. CAN FD Bit Timing
  10. 路侧停车系统有利有弊
  11. 如何关闭谷歌浏览器Google Chrome的阅读清单功能
  12. Android 锁屏,息屏情况下打开界面Activity,类似微信视频通话接电话时弹出接电话的界面
  13. 关于联想Y700,玩游戏闪屏
  14. 计算机专业分类分级,计算机等级分级
  15. 镜像网站 | 淘宝镜像网站
  16. linux展示表空间大小,oracle中看表空间大小等
  17. MySql求第二高薪水
  18. 甲骨文蟾蜍 Toad for Oracle 16.2 注册版
  19. header = struct.pack(!i, n) struct.error: 'i' format requires -2147483648 number 2147483647
  20. 回文是指正读反读均相同的字符序列;如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符序列是否是回文。

热门文章

  1. MySQL设计工厂管理数据库(Ⅰ)—表结构设计
  2. 试题2-12:数据库设计与操作
  3. Sublime Text 3 简体中文汉化包使用方法
  4. 如何判断linux使用的是HDD还是SSD、HHD;磁盘阵列RAID
  5. 网络营销复习题及答案
  6. jeesite4 下拉框
  7. LeetCode 1823. 找出游戏的获胜者 (约瑟夫环)
  8. Java实现数字水印
  9. java 代码的规范
  10. 网易工程师亲历:一次sql缺少where条件的惨案…