[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 ,如需转载请自行联系原博主。

相关文章
|
Oracle Java 关系型数据库
Random和ThreadLocalRandom区别
Random和ThreadLocalRandom区别
270 3
|
消息中间件 监控 数据可视化
一个基于.Net Core 开源的物联网基础平台
一个基于 .Net 6.0 使用C#语言编写的以实现可见与不可见的物理设备数字孪生的物联网平台。用于数据的收集、处理、可视化、设备管理、设备预警、报警的平台。
817 20
一个基于.Net Core 开源的物联网基础平台
|
Java Maven
关于 Could not find artifact ...:pom:1.0-SNAPSHOT 的问题!
关于 Could not find artifact ...:pom:1.0-SNAPSHOT 的问题!
3233 0
关于 Could not find artifact ...:pom:1.0-SNAPSHOT 的问题!
|
前端开发 Java
日志框架:基于Logback实现链路追踪
日志框架:基于Logback实现链路追踪
|
11月前
|
安全 Unix Linux
Veritas NetBackup 11 for Linux & Windows - 领先的企业备份和恢复解决方案
Veritas NetBackup 11 for Linux & Windows - 领先的企业备份和恢复解决方案
423 0
Veritas NetBackup 11 for Linux & Windows - 领先的企业备份和恢复解决方案
|
Unix Linux 数据安全/隐私保护
Linux服务器如何远程连接?服务器远程连接图文教程
服务器操作系统可以实现对计算机硬件与软件的直接控制和管理协调,任何计算机的运行离不开操作系统,服务器也一样,服务器操作系统主要分为四大流派:Windows Server、Netware、Unix和Linux。 今天驰网飞飞就给你们分享下Linux、Unix系统远程连接图文操作方法
344 4
Linux服务器如何远程连接?服务器远程连接图文教程
|
安全 开发者 Python
CSRF防护在Flask中的实现
【4月更文挑战第16天】本文介绍了如何在Flask中防范CSRF攻击。CSRF是一种利用用户身份执行恶意操作的攻击方式。要防御CSRF,可使用Flask-WTF扩展,它集成CSRF保护。首先安装Flask-WTF,设置SECRET_KEY,然后让表单继承自`FlaskForm`,自动应用CSRF保护。在模板中渲染表单时,包含`hidden_tag()`以渲染CSRF令牌。处理CSRF异常,添加错误处理函数。此外,使用HTTPS,限制请求来源,及时更新依赖也是重要措施。遵循这些步骤可提升Flask应用的安全性。
|
XML Web App开发 数据挖掘
Postman接口测试工具全解析:功能、脚本编写及优缺点探讨
文章详细分析了Postman接口测试工具的功能、脚本编写、使用场景以及优缺点,强调了其在接口自动化测试中的强大能力,同时指出了其在性能分析方面的不足,并建议根据项目需求和个人偏好选择合适的接口测试工具。
701 1
|
JavaScript
vue 页面向下滚动到指定位置时,顶部显示悬浮搜索框
vue 页面向下滚动到指定位置时,顶部显示悬浮搜索框
373 1
|
jenkins Java 持续交付
Jenkins 迁移及安装
Jenkins 迁移及安装