C++ 右移运算符使用

C++ 题目背景
假定有一个右移动运算符,它的功能如下所示:

右移 257=25
右移 182=18
右移 933 =93
注:因系统不允许打出右移动运算符,请见谅。

给定一个正整数N (100<N<1000) ,请计算 N 减去 N 的 右移动运算符的结果

例如: N=257时,
257-(右移 257)
=257-25
=232

输入格式
输入一个正整数N (100<N<1000)

输出格式
输出一个整数,表示 N 减去 N 的 右移动运算符的结果

输入输出样例
输入样例
257
输出样例
232

说一说我的看法吧,一般右移运算符用于将操作数的二进制表示向右移动指定的位数,但是在这里感觉不是这个意思。
因为题目限制了n的范围是3位数,而且结合给出的几个例子,感觉右移动运算符在这里的含义是在十进制下将该数向右移动1位,也就是取前两个数字,可以用n/10来表示。
最终代码如下:


#include <iostream>
using namespace std;

int main() {
    int n;
    cin>>n;
    int m = n/10;
    cout<<n-m;  
    return 0;
}

img


这样样例是通过的

以下是C++的代码实现:

#include <iostream>

using namespace std;

int main()
{
    int N;
    cin >> N;

    int result = N - (N >> 8);

    cout << result << endl;

    return 0;
}

解释一下代码:

题目要求我们计算 N 减去它的右移动运算符的结果,其中右移动运算符将一个数右移8位,即除以256。因此,我们可以使用 >> 运算符来进行右移操作,并将结果减去原数 N

最后,我们将计算得到的结果输出到标准输出中。