MST
星途 面试题库

面试题:C++中位操作符的应用

请编写一个C++函数,该函数接受一个整数参数,使用位操作将该整数的二进制表示中第3位和第5位进行交换,并返回交换后的结果。例如,若输入为10(二进制为1010),交换后返回14(二进制为1110)。
12.0万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

int swapBits(int num) {
    // 获取第3位和第5位的值
    int bit3 = (num >> 3) & 1;
    int bit5 = (num >> 5) & 1;

    // 清除第3位和第5位
    num &= ~(1 << 3);
    num &= ~(1 << 5);

    // 交换后设置新的第3位和第5位
    num |= (bit5 << 3);
    num |= (bit3 << 5);

    return num;
}

你可以使用以下方式调用这个函数:

int main() {
    int input = 10;
    int result = swapBits(input);
    std::cout << "交换前: " << input << " (二进制: " << std::bitset<8>(input) << ")" << std::endl;
    std::cout << "交换后: " << result << " (二进制: " << std::bitset<8>(result) << ")" << std::endl;
    return 0;
}