#include <iostream>
using namespace std;
// Complement of Base 10 Integer
int main()
{
int n, mask = 0, ans;
cout << "enter a number : ";
cin >> n;
if (n == 0)
{
cout << 1;
}
else
{
while (n != 0)
{
mask = (mask << 1) | 1;
n = n >> 1;
}
ans = (~n) & mask;
cout << "ans = " << ans;
}
return 0;
}
这是整数的补码的代码
当我给出一个输入n = 5时,输出是ans = 7,它应该是ans = 2
有谁能解释一下这里面有什么问题吗?
我是这个平台的新手,请不要删除我的问题。我之前的问题也因为不喜欢而被删除了。我是来学习的,还在学习中。
1条答案
按热度按时间46qrfjad1#
n
的值通过以下循环更改为0
:如果以后要使用
n
的值,请将其保存到其他位置。