【C/C++】循环移位

题目描述:

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

输入格式:

两个整数 i 和 j,以空格分隔。

输出格式:

输出 i 的值。

例如:

输入:3 10

输出:3072

输入:-65535 -2

输出:2147467264

cpp 复制代码
#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,表示程序成功结束
}
相关推荐
金融小师妹3 小时前
应用BERT-GCN跨模态情绪分析:贸易缓和与金价波动的AI归因
大数据·人工智能·算法
广州智造3 小时前
OptiStruct实例:3D实体转子分析
数据库·人工智能·算法·机器学习·数学建模·3d·性能优化
Trent19855 小时前
影楼精修-肤色统一算法解析
图像处理·人工智能·算法·计算机视觉
feifeigo1235 小时前
高光谱遥感图像处理之数据分类的fcm算法
图像处理·算法·分类
北上ing6 小时前
算法练习:19.JZ29 顺时针打印矩阵
算法·leetcode·矩阵
.格子衫.7 小时前
真题卷001——算法备赛
算法
XiaoyaoCarter8 小时前
每日一道leetcode
c++·算法·leetcode·职场和发展·二分查找·深度优先·前缀树
Hygge-star8 小时前
【数据结构】二分查找5.12
java·数据结构·程序人生·算法·学习方法
June`9 小时前
专题二:二叉树的深度搜索(二叉树剪枝)
c++·算法·深度优先·剪枝
加什么瓦10 小时前
Redis——底层数据结构
数据结构