本文主要是介绍【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; // 定义无符号整数iint j; // 定义整数jstd::cin >> i >> j; // 从标准输入流中读取两个整数,分别存储到i和j中if (j > 0) { // 如果j大于0i = rotateLeft(i, j); // 调用左移函数将i左移j位} else if (j < 0) { // 如果j小于0j = -j; // 将j取负值i = rotateRight(i, j); // 调用右移函数将i右移j位}std::cout << i << std::endl; // 输出结果i到标准输出流中,并换行return 0; // 返回0,表示程序成功结束
}
这篇关于【C/C++】循环移位的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!