【C/C++】循环移位

题目描述:
编写一个C++程序,接受两个整数输入 i 和 j,如果 j 的值大于 0,则将 i 循环左移 j 位;如果 j 的值小于 0,则将 i 循环右移 j 位。最后输出 i 的值。

输入格式:
两个整数 i 和 j,以空格分隔。

输出格式:
输出 i 的值。

例如:
输入:3 10
输出:3072

输入:-65535 -2
输出:2147467264

#include <iostream> // 包含输入输出流库

unsigned int rotateLeft(unsigned int i, int j) { // 左移函数,接受一个无符号整数和一个整数作为参数
    return (i << j) | (i >> (32 - j)); // 返回i左移j位后的结果,或上i右移(32-j)位的结果
}

unsigned int rotateRight(unsigned int i, int j) { // 右移函数,接受一个无符号整数和一个整数作为参数
    return (i >> j) | (i << (32 - j)); // 返回i右移j位后的结果,或上i左移(32-j)位的结果
}

int main() { // 主函数
    unsigned int i; // 定义无符号整数i
    int j; // 定义整数j
    std::cin >> i >> j; // 从标准输入流中读取两个整数,分别存储到i和j中

    if (j > 0) { // 如果j大于0
        i = rotateLeft(i, j); // 调用左移函数将i左移j位
    } else if (j < 0) { // 如果j小于0
        j = -j; // 将j取负值
        i = rotateRight(i, j); // 调用右移函数将i右移j位
    }

    std::cout << i << std::endl; // 输出结果i到标准输出流中,并换行
    return 0; // 返回0,表示程序成功结束
}

相关推荐

  1. 【C/C++】循环移位

    2024-04-07 22:34:01       41 阅读
  2. CRC循环冗余校验码算法计算

    2024-04-07 22:34:01       44 阅读
  3. CRC32 循环冗余校验算法

    2024-04-07 22:34:01       37 阅读
  4. <span style='color:red;'>CI</span>/<span style='color:red;'>CD</span>

    CI/CD

    2024-04-07 22:34:01      49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-07 22:34:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-07 22:34:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-07 22:34:01       87 阅读
  4. Python语言-面向对象

    2024-04-07 22:34:01       96 阅读

热门阅读

  1. Python继承和多态的解释和示例

    2024-04-07 22:34:01       37 阅读
  2. LeetCode刷题--- 最长回文子序列

    2024-04-07 22:34:01       40 阅读
  3. day11 基础函数(二)

    2024-04-07 22:34:01       36 阅读
  4. kmp算法

    kmp算法

    2024-04-07 22:34:01      42 阅读
  5. Docker部署minio

    2024-04-07 22:34:01       37 阅读
  6. golang map

    2024-04-07 22:34:01       48 阅读