程序员面试金典——5.6奇偶位交换

转载自:https://www.nowcoder.com/profile/2218461/codeBookDetail?submissionId=18713259
思路:
用0xAAAAAAAA与x相与求的奇数位上数字(偶数位上数字为0)
用0x 55555555 与x相与求的偶数位上数字(奇数位上数字为0)
oddVal右移一位 even左移一位 相加即可。
楼上很多没有&0xfffffffe与 &0x7fffffff这两步,可能能通过,却是不严谨的,因为int是有符号整型,所以如果x的最高位为1,那么取偶数位得到的数even的最高位也为1,如果此时右移,那么最高位补1而不是0,后面或的时候就有可能出问题,因为1|0等于1,改变了不该变的值。
举个例子:
x为1000…..0(总共31个0)
取偶数位得 even = 1000….0
取奇数位得 odd = 0000…..0
因为int为整型,最高位为1的为负数,右移将在左边添1
即even右移后为1100….0
even | odd = 1100….0
很明显不正确,结果应该为0100…….0才对
所以要把even的最高位置为0,即让even与 0x7fffffff相与。

class Exchange {
public:int exchangeOddEven(int x) {// write code hereint odd  = ((x&0x55555555)<<1);int even = ((x&0xAAAAAAAA)>>1)&0x7fffffff; return even|odd;}
};

程序员面试金典——5.6奇偶位交换相关推荐

  1. 程序员面试金典——17.1无缓存交换

    程序员面试金典--17.1无缓存交换 主要是利用异或性质~ 程序员面试金典--17.1无缓存交换 class Exchange { public:vector<int> exchangeA ...

  2. 程序员面试金典 - 面试题 16.01. 交换数字(位运算swap)

    1. 题目 编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值. 示例: 输入: numbers = [1,2] 输出: [2,1]提示: numbers.length ...

  3. 程序员面试金典 - 面试题 16.21. 交换和(哈希set)

    1. 题目 给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等. 返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元素. 若有多 ...

  4. 奇偶位交换 牛客网 程序员面试金典 C++ Python

    奇偶位交换 牛客网 程序员面试金典 C++ Python 题目描述 请编写程序交换一个数的二进制的奇数位和偶数位.(使用越少的指令越好) 给定一个int x,请返回交换后的数int. 测试样例: 10 ...

  5. 《程序员面试金典》+《算法导论》

    <程序员面试金典>+<算法导论> 因为最近可能会面临一波面试,但是自己各种算法以及常见的问题的熟悉程度感觉还不够,但是由前几次的代码优化经验来看,算法优化可以说是代码优化的重中 ...

  6. 程序员面试金典——18.10字符串变换

    程序员面试金典--18.10字符串变换 Solution1: 我的答案.穷举法,个人认为此题还是有点难度的... 利用了倒推法以及很高的时间复杂度才解决,并不值得推崇呀. class Change { ...

  7. 程序员面试金典——5.8像素设定

    程序员面试金典--5.8像素设定 参考网址:https://www.nowcoder.com/questionTerminal/31ade926268441878d423029c54f5171 链接: ...

  8. 程序员面试金典——5.3最接近的数

    程序员面试金典--5.3最接近的数 Solution1:把问题想的太简单了,参考书上答案(P166-P170)如下: 书上的思路和算法就很好啊~ class CloseNumber { public: ...

  9. 程序员面试金典——5.1二进制插入

    程序员面试金典--5.1二进制插入 Solution1:题目要求严格了就是好啊.. class BinInsert { public:int binInsert(int n, int m, int j ...

最新文章

  1. 计算机应用基础10000字论文,计算机应用基础论文
  2. linux几种快速清空文件内容的方法
  3. matlab 读取fig数据
  4. JAVA解析html文档,替换img图片路径成base64编码,并将文章存入数据库
  5. 作者:孙卫强,博士,上海交通大学教授、博士生导师。
  6. “女神节”男性送礼热门商品榜:“求生欲”极强!
  7. Linux系统下快速配置HugePages的完整步骤
  8. Android 开发未来的出路何在? | 技术头条
  9. zookeeper注册中心 kerberos_ZooKeeper 并不适合做注册中心
  10. 目前人工智能技术趋势如何?
  11. 面试官:亿级流量架构分布式事务如何实现?我懵了。。
  12. Django总叙(转)
  13. 联想服务器没有安装iis组件,win10没有iis怎么安装_手把手教你安装iis的详细步骤...
  14. 快来试试这几个照片拼图软件,效果很不错
  15. Kconfig的两种用法
  16. 计算机软硬件的组成及主要技术指标,计算机软硬件系统的组成及主要技术指标...
  17. Vue2.0源码解析 - 知其然知其所以然之keep-alive原理分析(二)
  18. php返回token什么意思,token什么意思
  19. tensorflow如何使用tensorboard将图片文件events.out.tfevents.1618410161.DESKTOP-CLCBFNS展示出来
  20. 在linux中如何修改保存gun文件_Linux下文件重命名、创建、删除、修改及保存文件...

热门文章

  1. linux之--install超时
  2. angular input_更快的Angular应用程序
  3. jupyter ipython display_ipython jupyter notebook中显示图像和数学公式实例
  4. 不同网段的局域网怎么互通_智能化工程中,局域网IP地址不够用怎么解决?
  5. php5.3 本地调试,WIN7下PHP 5.3.27和PHPStorm6调试
  6. 服务器安装nvidia驱动_无法安装最新版NVIDIA显卡驱动,从技术角度该怎么办?
  7. rstudio r语言_如何在R中接受用户输入?
  8. g++ -std=c++_在C ++ std库中使用sort()
  9. 指针数组 c ++_了解C ++中的数组指针
  10. linux tee命令_Linux tee命令示例