gpt4 book ai didi

c - 在不使用 '-' 运算符的情况下减去两个数字

转载 作者:太空狗 更新时间:2023-10-29 17:12:08 24 4
gpt4 key购买 nike

我尝试使用以下代码,但我不明白为什么它会给我错误的答案。我正在计算 2 的补码并加上另一个数。

#include <stdio.h>

int add(int a, int b) {
while (a) {
a = (a & b) << 1;
b = a^b;
}
return b;
}

int sub(int a, int b) // add a with b's 2's complement.
{
return (add(a, add(~b, 1)));
}

int main() {
int a, b, res;
a = 3, b = 1;
res = sub(a, b);
printf("%d\n", res);
return 0;
}

最佳答案

我按照 NullUserException 的建议使用了不同的 add() 函数,它现在可以工作了:

int add(int a,int b)
{
int x;
x = a^b;

while(a&b)
{
b = ((a&b)<<1);
a = x;
x = a^b;
//b=(a^b);
}

return x;
}

关于c - 在不使用 '-' 运算符的情况下减去两个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3430651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com