gpt4 book ai didi

c - C 中的二进制加法,来自数组

转载 作者:太空宇宙 更新时间:2023-11-04 04:41:05 25 4
gpt4 key购买 nike

我想在 C 中将两个 5 位二进制数相加。它用于二进制补码转换,我只需要在我的原始数字上加一。我看到网上有大量代码可用,但我无法在我的实现中使用它。我从这次执行中得到了 '00010',它应该是 '00100'

这里是

int addBinary(int a[], int b[], int sum[]);

int main(){
int i=0;
int g =0;
int sum[5];

sum[0] =0;
sum[1] =0;
sum[2] =0;
sum[3] =0;
sum[4] =0;

int b[5];
b[0] =0;
b[1] =0;
b[2] =0;
b[3] =0;
b[4] =1;

int set[5];
set[0] =0;
set[1] =0;
set[2] =0;
set[3] =1;
set[4] =1;

addBinary(set,b,sum);

}


int addBinary(int a[], int b[], int sum[]){
int i, c = 0;
for(i = 0; i < 5 ; i++){
sum[i] = ((a[i] ^ b[i]) ^ c); // c is carry
c = ((a[i] & b[i]) | (a[i] & c)) | (b[i] & c);
}

sum[i] = c;
int z=0;
for(z=0; z<5; z++) {
printf("%d",sum[z]);
}

return c;
}

最佳答案

您正在从 MSB 到 LSB 运行加法,方向错误。

要么将循环更改为从 i=4 开始并向下计数 i,要么更改数组中位的顺序,以便 a[0 ] 是 LSB 并调整您的打印输出循环(这在 IMO 上更有意义)。

关于c - C 中的二进制加法,来自数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26449983/

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