交换一个整数二进制表示中的奇数位和偶数位
题目
原文:
写程序交换一个整数二进制表示中的奇数位和偶数位,用尽可能少的代码实现。 (比如,第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,是0则输出0 以同样的方式提取偶数位置 #include <stdio.h&g ...
- 被11整除的四位偶数c语言,位和位差-什么叫奇数位和偶数位?能被11整除的数,奇 – 手机爱问...
2006-07-09 能被7整除的数有什么特征 (1)1与0的特性: 1是任何整数的约数,即对于任何整数a,总有1|a. 0是任何非零整数的倍数,a≠0,a为整数,则a|0. (2)若一个整数的末位是 ...
- 打印一个整数二进制表示中所有的奇数位和偶数位
#include<stdio.h>void my_print(int n){int i = 0;printf(" 打印奇数位\n");for (i = 30; i &g ...
- //2.使用宏将一个数二进制中的奇数位和偶数为进行交换。 #includestdio.h #includestdlib.h #define EXH(x) \ ((x 0x5555555
//2.使用宏将一个数二进制中的奇数位和偶数为进行交换. 分析:提取偶数位:即让原数按位与01010101010101010101010101010101,16进制形式为0x55555555 提取奇数 ...
- 给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数
给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数. 1.在文件中至少存在这样一个数? 2.如果有足够的内存,如何处理? ...
- 奇偶数分离c语言,如何把一个整型数组中,奇数偶数进行分离 怎么使数组进行奇偶奇偶相间排序...
导航:网站首页 > 如何把一个整型数组中,奇数偶数进行分离 怎么使数组进行奇偶奇偶相间排序 如何把一个整型数组中,奇数偶数进行分离 怎么使数组进行奇偶奇偶相间排序 相关问题: 匿名网友: imp ...
- 本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字。输入格式:输入在一行中给出一个长整型范围内的非负整数。输出格式:从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格
本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字.输入格式:输入在一行中给出一个长整型范围内的非负整数.输出格式:从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格 1 ...
- 星号三角形描述读入一个整数N,N是奇数,输出由星号字符组成的等边三角形,要求:第1行1个星号,第2行3个星号,第3行5个星号,依次类推,最后一行共N的星号。输入输出示例
题目: 星号三角形 描述 读入一个整数N,N是奇数,输出由星号字符组成的等边三角形,要求: 第1行1个星号,第2行3个星号,第3行5个星号,依次类推,最后一行共N的星号. 输入输出示例 输入 输出 示 ...
- C语言:将两个两位数的正整数a、b合并形成一个整数放在c中。
将两个两位数的正整数a.b合并形成一个整数放在c中.合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上, b数的十位和个位数依次放在c数的个位和百位上.例如:当a=45,b=12.调用该函数 ...
最新文章
- java 虚拟机规范_Java虚拟机规范----Java虚拟机结构
- Windows azure 上将Legcay IO操作轻松切换到Blob
- 想看Vue文档,cn放错位置,误入xx网站...
- 企业级系统架构设计技术与互联网应用技术结合主题一 大规模并发性能问题探讨...
- python 爬虫 请求网页内容不一致_Python爬虫偷懒神器 — 快速构造请求头!
- codeforces 1017E
- Pythonseleniumtesseract自动化测试随机码、验证码(Captcha)的OCR识别解决方案参考
- 计算机web程序开发,基于WEB的计算机应用基础考试系统的开发与设计
- bzoj 1196: [HNOI2006]公路修建问题(贪心+最小生成树)
- 拓端tecdat|用RSHINY DASHBOARD可视化美国投票记录
- eclispe file查找
- android 9视频播放器,通用视频播放器Android版本9.10.18下载
- MySQL嵌套查询(子查询)
- java gc_Java GC的那些事(1)
- lightbox点击图片预览
- 使用xmarks同步 chrome ie firefox safari书签
- [论文笔记]Fader Networks: Manipulating Images by Sliding Attributes(2017 NIPS)
- Devoxx法国2012天3
- Apache占用tcp6的80端口
- 人脑与计算机类比文献,类比推理的影响因素和脑生理基础研究(刘昌2004).pdf
热门文章
- 3550配置DHCP
- SUN平台,光纤共享存储互斥失败导致的数据灾难恢复
- java版电子商务spring cloud分布式微服务b2b2c社交电商 (十四)服务注册(consul)
- 知识点丨你一定要了解的Win10 RS2重大更新,绝不只是装补丁!
- 自己制作 SPx N合1 自动安装盘(x86)
- 【BZOJ】1630: [Usaco2007 Demo]Ant Counting(裸dp/dp/生成函数)
- 在Spring3中,配置DataSource的方法有五种
- Android 移植到 C#
- 关闭体眠可释放系统盘的空间
- 正则表达式 一切从简