[CareerCup] 5.6 Swap Odd and Even Bits 交换奇偶位

简介:

5.6 Write a program to swap odd and even bits in an integer with as few instructions as possible (e.g., bit 0 and bit 1 are swapped, bit 2 and bit 3 are swapped, and soon).
这道题让我们交换奇偶位,那么我们首先还是要考虑用位操作Bit Manipulation来做,我们知道由于奇偶位是相邻的,奇数位平移一位就是偶数位,反过来偶数位平移一位就是奇数位,那么这题我们可以分别将原来的奇数位和偶数位分别提取出来,各自平移一位,再将其混合成结果即可。提取的方法我们用mask来,对于一个32位的整型数,其奇数位的二进制的mask为10101010101010101010101010101010,换成十六进制数为0xaaaaaaaa,同理偶数位的二进制的mask为01010101010101010101010101010101,换成十六进制数为0x55555555,平移完将其或起来即可,参见代码如下:

class Solution {
public:
    int swapOddEvenBits(int x) {
        return (((x & 0xaaaaaaaa) >> 1) | ((x & 0x55555555) << 1));
    }
};

本文转自博客园Grandyang的博客,原文链接:交换奇偶位[CareerCup] 5.6 Swap Odd and Even Bits ,如需转载请自行联系原博主。

相关文章
|
存储 Java 开发者
Java数据类型:从入门到精通,你不得不看的“宝典”
【6月更文挑战第13天】Java凭借其跨平台能力和丰富的类库深受开发者喜爱。学习Java首先需掌握数据类型,包括基本类型(整型、浮点型、字符型、布尔型)和引用类型(类、接口、数组)。基本类型占用固定内存,值不可变;引用类型存储对象地址。通过示例代码展示了如何声明和使用这些类型。此外,Java的封装类如Integer等提供了操作便利。理解数据类型对于程序设计至关重要,是进一步学习Java高级特性的基础。开始你的Java编程之旅,不断实践,你将在Java世界中不断进步。
171 4
|
缓存 边缘计算 应用服务中间件
一篇文章让你搞懂到底什么是 CDN
一篇文章让你搞懂到底什么是 CDN
2195 1
|
安全 开发者 Python
CSRF防护在Flask中的实现
【4月更文挑战第16天】本文介绍了如何在Flask中防范CSRF攻击。CSRF是一种利用用户身份执行恶意操作的攻击方式。要防御CSRF,可使用Flask-WTF扩展,它集成CSRF保护。首先安装Flask-WTF,设置SECRET_KEY,然后让表单继承自`FlaskForm`,自动应用CSRF保护。在模板中渲染表单时,包含`hidden_tag()`以渲染CSRF令牌。处理CSRF异常,添加错误处理函数。此外,使用HTTPS,限制请求来源,及时更新依赖也是重要措施。遵循这些步骤可提升Flask应用的安全性。
|
机器学习/深度学习 人工智能 数据挖掘
探索自动化测试的边界:从脚本到智能
在软件测试领域,自动化测试一直是提高测试效率与质量的重要工具。随着技术的发展,自动化测试也在不断进化,从简单的脚本录制回放,到现在结合人工智能的智能测试。本文将探讨自动化测试的发展路径,以及如何通过智能化提升测试的深度和广度,同时分析面临的挑战和未来的可能性。
|
存储 安全 Java
Java详解 : 单列集合 | 双列集合 | Collections类
Java详解 : 单列集合 | 双列集合 | Collections类
595 0
|
XML Java API
Spring AOP -- 面相切面编程
【2月更文挑战第1天】基于注解 @Aspect;切点表达式;通知类型;多种通知类型的执行顺序;@Pointcut;多个切面类的执行顺序;@Order;基于自定义注解;给已有的注解进行功能的增强;AOP的优势:代码无侵入:不修改原始的业务方法,就可以对原始的业务方法进行了功能的增强或者是功能的改变;减少了重复代码;提高开发效率;维护方便。 ​
408 2
|
Java Maven Windows
新安装IDEA插件优化
新安装IDEA插件优化
新安装IDEA插件优化
labview程序结构for循环while循环n层叠平铺定时顺序结构求和总和平方和根
labview程序结构for循环while循环n层叠平铺定时顺序结构求和总和平方和根
|
前端开发 程序员 API
后台服务之RESTful API
后台服务之RESTful API
476 0
后台服务之RESTful API
|
Web App开发 缓存 开发者
Chrome 技术篇-常用web调试技巧清除缓存并硬性重新加载
Chrome 技术篇-常用web调试技巧清除缓存并硬性重新加载
1124 0
Chrome 技术篇-常用web调试技巧清除缓存并硬性重新加载