题目

原文:

写程序交换一个整数二进制表示中的奇数位和偶数位,用尽可能少的代码实现。 (比如,第0位和第1位交换,第2位和第3位交换…)

解答

这道题目比较简单。分别将这个整数的奇数位和偶数位提取出来,然后移位取或即可。

代码如下:

int swap_bits(int x){return ((x & 0x55555555) << 1) | ((x >> 1) & 0x55555555);
}

当然也可以采用更自然的方式来写这段代码:

int swap_bits1(int x){return ((x & 0x55555555) << 1) | ((x & 0xAAAAAAAA) >> 1);
}

上面的代码思路和作用都是一样的,不过按照《Hacker’s delight》这本书里的说法, 第一种方法避免了在一个寄存器中生成两个大常量。如果计算机没有与非指令, 将导致第二种方法多使用1个指令。总结之,就是第一种方法更好。

交换一个整数二进制表示中的奇数位和偶数位相关推荐

  1. 打印整数二进制的奇数位和偶数位

    获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列 思路: 提取所有的奇数位,如果该位是1,输出1,是0则输出0 以同样的方式提取偶数位置 #include <stdio.h&g ...

  2. 被11整除的四位偶数c语言,位和位差-什么叫奇数位和偶数位?能被11整除的数,奇 – 手机爱问...

    2006-07-09 能被7整除的数有什么特征 (1)1与0的特性: 1是任何整数的约数,即对于任何整数a,总有1|a. 0是任何非零整数的倍数,a≠0,a为整数,则a|0. (2)若一个整数的末位是 ...

  3. 打印一个整数二进制表示中所有的奇数位和偶数位

    #include<stdio.h>void my_print(int n){int i = 0;printf(" 打印奇数位\n");for (i = 30; i &g ...

  4. //2.使用宏将一个数二进制中的奇数位和偶数为进行交换。 #includestdio.h #includestdlib.h #define EXH(x) \ ((x 0x5555555

    //2.使用宏将一个数二进制中的奇数位和偶数为进行交换. 分析:提取偶数位:即让原数按位与01010101010101010101010101010101,16进制形式为0x55555555 提取奇数 ...

  5. 给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数

    给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数.            1.在文件中至少存在这样一个数?            2.如果有足够的内存,如何处理? ...

  6. 奇偶数分离c语言,如何把一个整型数组中,奇数偶数进行分离 怎么使数组进行奇偶奇偶相间排序...

    导航:网站首页 > 如何把一个整型数组中,奇数偶数进行分离 怎么使数组进行奇偶奇偶相间排序 如何把一个整型数组中,奇数偶数进行分离 怎么使数组进行奇偶奇偶相间排序 相关问题: 匿名网友: imp ...

  7. 本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字。输入格式:输入在一行中给出一个长整型范围内的非负整数。输出格式:从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格

    本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字.输入格式:输入在一行中给出一个长整型范围内的非负整数.输出格式:从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格 1 ...

  8. 星号三角形描述读入一个整数N,N是奇数,输出由星号字符组成的等边三角形,要求:第1行1个星号,第2行3个星号,第3行5个星号,依次类推,最后一行共N的星号。输入输出示例

    题目: 星号三角形 描述 读入一个整数N,N是奇数,输出由星号字符组成的等边三角形,要求: 第1行1个星号,第2行3个星号,第3行5个星号,依次类推,最后一行共N的星号. 输入输出示例 输入 输出 示 ...

  9. C语言:将两个两位数的正整数a、b合并形成一个整数放在c中。

    将两个两位数的正整数a.b合并形成一个整数放在c中.合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上, b数的十位和个位数依次放在c数的个位和百位上.例如:当a=45,b=12.调用该函数 ...

最新文章

  1. java 虚拟机规范_Java虚拟机规范----Java虚拟机结构
  2. Windows azure 上将Legcay IO操作轻松切换到Blob
  3. 想看Vue文档,cn放错位置,误入xx网站...
  4. 企业级系统架构设计技术与互联网应用技术结合主题一 大规模并发性能问题探讨...
  5. python 爬虫 请求网页内容不一致_Python爬虫偷懒神器 — 快速构造请求头!
  6. codeforces 1017E
  7. Pythonseleniumtesseract自动化测试随机码、验证码(Captcha)的OCR识别解决方案参考
  8. 计算机web程序开发,基于WEB的计算机应用基础考试系统的开发与设计
  9. bzoj 1196: [HNOI2006]公路修建问题(贪心+最小生成树)
  10. 拓端tecdat|用RSHINY DASHBOARD可视化美国投票记录
  11. eclispe file查找
  12. android 9视频播放器,通用视频播放器Android版本9.10.18下载
  13. MySQL嵌套查询(子查询)
  14. java gc_Java GC的那些事(1)
  15. lightbox点击图片预览
  16. 使用xmarks同步 chrome ie firefox safari书签
  17. [论文笔记]Fader Networks: Manipulating Images by Sliding Attributes(2017 NIPS)
  18. Devoxx法国2012天3
  19. Apache占用tcp6的80端口
  20. 人脑与计算机类比文献,类比推理的影响因素和脑生理基础研究(刘昌2004).pdf

热门文章

  1. 3550配置DHCP
  2. SUN平台,光纤共享存储互斥失败导致的数据灾难恢复
  3. java版电子商务spring cloud分布式微服务b2b2c社交电商 (十四)服务注册(consul)
  4. 知识点丨你一定要了解的Win10 RS2重大更新,绝不只是装补丁!
  5. 自己制作 SPx N合1 自动安装盘(x86)
  6. 【BZOJ】1630: [Usaco2007 Demo]Ant Counting(裸dp/dp/生成函数)
  7. 在Spring3中,配置DataSource的方法有五种
  8. Android 移植到 C#
  9. 关闭体眠可释放系统盘的空间
  10. 正则表达式 一切从简