面试题 05.07. 配对交换
2023-02-18 16:34:58 时间
面试题 05.07. 配对交换
配对交换。编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位0与位1交换,位2与位3交换,以此类推)。
示例1:
输入:num = 2(或者0b10)
输出 1 (或者 0b01)
示例2:
输入:num = 3
输出:3
32位二进制数偶数位为1的情况是
0xaaaaaaaa = 0b1010_1010_1010_1010_1010_1010_1010_1010
32位二进制奇数位为1的情况是:
0x55555555 = 0b0101_0101_0101_0101_0101_0101_0101_0101
对于num与0xaaaaaaaa进行与运算,得到num的偶数位
对于num与0x55555555进行与运算,得到的是num的奇数位
然后将得到的偶数位左移一位,得到的奇数位右移一位,然后进行或运算即可
class Solution {
public:
int exchangeBits(int num) {
//奇数位
int odd = num & 0x55555555;//得到num的奇数位二进制
//偶数
int even = num & 0xaaaaaaaa;//得到num的偶数位二进制
odd = odd << 1;//奇数位左移一位,占据偶数位的位置
even = even >>1;//偶数位右移一位,占据原奇数位的位置
return odd | even;//进行或运算
}
};
class Solution {
public:
int exchangeBits(int num) {
return (num<<1 & 0xAAAAAAAA) | (num>>1 & 0x55555555);
}
};
相关文章
- Python基础部分:2、 对计算机的认识和python解释器
- Python基础部分:1、typora软件和对计算机的认识
- 【华为云专家原创】 服务注册与发现如何满足服务治理?
- 由两个问题引发的对GaussDB(DWS)负载均衡的思考
- 云上可靠性测试:让我们一起给开发找点事儿
- 用一把吃鸡的时间,免费上云搭建网站应用
- 一个企业用电有多浪费?90后开发者大显身手,让每度电从此更“聪明”!
- Demo分享丨看ModelArts与HiLens是如何让车自己跑起来的
- 如何通过一个SDK轻松搞定人脸识别,拯救初入职场的程序猿
- ModelArts黑科技揭秘|弹性训练,让训练资源张弛有度
- 道高一丈,且看CWE4.2的新特性
- 科技抗疫,少年可期,为这群有AI的天使开发者疯狂打call
- Multi-Architecture镜像制作指南已到,请查收!
- ModelArts黑科技揭秘|模型智能评估、诊断,让模型来个“体检
- Rust太难?那是你没看到这套Rust语言学习万字指南!
- 资深码农:拿下软件测试,只需掌握好这两种方法!
- 自定义TBE算子入门,不妨从单算子开发开始
- 华为全栈AI技术干货深度解析,解锁企业AI开发“秘籍”
- 应对游戏业务的四大“崩溃”场景有妙招,安全畅玩不是梦!
- 从中心到边缘,IoT正变为互联网之上的一张大网