·

你知道机械计算机吗,有木有想过补码其实是自然现象

111 + 1 = (1)000

什么数加一等于 0 ? 所以 111 = -1, 那 -2 呢

Replies
5

机械计算机指的是电子计算机诞生之前的计算机械吧。

然后就是,您说的补码是自然现象,我不太理解。

假设二进制数最大取到第三位,那么2 = 010,取反后就是101,再加1就是110

所以2的补码是110,也是-2的原码。

另外,由于进位发生变化的是符号位。

下面是求2的补码(即-2的原码)代码

#include <iostream>
using namespace std;

int main()
{
    int n = 2;
    
    n = ~n + 1;
    cout << n << endl;
 
    for(int i=2; i>=0; i--)
    {
        if(n >> i & 1) cout << 1;
        else cout << 0;
    }
    puts("");

    return 0;
}

运行结果是

-2
110