使用 char 数组进行二进制加法
Binary addition using char array
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <stdio.h>
int main(){
char Pbuf8[9]={"01100000"};
char Mbuf4[10]={"01110000"};
int num=0;
char Snum[9]="0";
int carry=0;
for(int c=7;c>=0;c--){
//Convert a string to a number and add
num=(Pbuf8[c]-'0')+(Mbuf4[c]-'0')+carry;
//binary addition
if(num==1){
Snum[c]=num;
carry=0;
}else if(num==2){
num=0;
carry=1;
Snum[c]=num;
}else if(num==3){
num=1;
carry=1;
Snum[c]=num;
}
//Convert num to string and store in Snum
sprintf(Snum, "%d", num);
}
//output
printf("%s",Snum);
return 0;
}
计算并输出Pbuf8和Mbuf4之和。
我想输出'00001011'但是输出'1'
如果没有'sprintf(number, "%d", number);'不存在,则输出'rr'。
如何获得我想要的值?
您的代码中有 3 个小错误。
- snum必须初始化全部为0,否则只填一个0,加法的下半部分不可见
- 您需要先将“num”转换回数字,然后再将其添加回 char 数组。所以,
num+'0'
- 删除“sprintf”,会覆盖之前创建的结果
更正后的代码如下所示:
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <stdio.h>
int main(){
char Pbuf8[9]={"01100000"};
char Mbuf4[10]={"01110000"};
int num=0;
char Snum[9]="00000000";
int carry=0;
for(int c=7;c>=0;c--){
//Convert a string to a number and add
num=(Pbuf8[c]-'0')+(Mbuf4[c]-'0')+carry;
//binary addition
if(num==1){
Snum[c]=num+'0';
carry=0;
}else if(num==2){
num=0;
carry=1;
Snum[c]=num+'0';
}else if(num==3){
num=1;
carry=1;
Snum[c]=num+'0';
}
//Convert num to string and store in Snum
//sprintf(Snum, "%d", num);
}
//output
printf("%s",Snum);
return 0;
}
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <stdio.h>
int main(){
char Pbuf8[9]={"01100000"};
char Mbuf4[10]={"01110000"};
int num=0;
char Snum[9]="0";
int carry=0;
for(int c=7;c>=0;c--){
//Convert a string to a number and add
num=(Pbuf8[c]-'0')+(Mbuf4[c]-'0')+carry;
//binary addition
if(num==1){
Snum[c]=num;
carry=0;
}else if(num==2){
num=0;
carry=1;
Snum[c]=num;
}else if(num==3){
num=1;
carry=1;
Snum[c]=num;
}
//Convert num to string and store in Snum
sprintf(Snum, "%d", num);
}
//output
printf("%s",Snum);
return 0;
}
计算并输出Pbuf8和Mbuf4之和。
我想输出'00001011'但是输出'1'
如果没有'sprintf(number, "%d", number);'不存在,则输出'rr'。
如何获得我想要的值?
您的代码中有 3 个小错误。
- snum必须初始化全部为0,否则只填一个0,加法的下半部分不可见
- 您需要先将“num”转换回数字,然后再将其添加回 char 数组。所以,
num+'0'
- 删除“sprintf”,会覆盖之前创建的结果
更正后的代码如下所示:
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <stdio.h>
int main(){
char Pbuf8[9]={"01100000"};
char Mbuf4[10]={"01110000"};
int num=0;
char Snum[9]="00000000";
int carry=0;
for(int c=7;c>=0;c--){
//Convert a string to a number and add
num=(Pbuf8[c]-'0')+(Mbuf4[c]-'0')+carry;
//binary addition
if(num==1){
Snum[c]=num+'0';
carry=0;
}else if(num==2){
num=0;
carry=1;
Snum[c]=num+'0';
}else if(num==3){
num=1;
carry=1;
Snum[c]=num+'0';
}
//Convert num to string and store in Snum
//sprintf(Snum, "%d", num);
}
//output
printf("%s",Snum);
return 0;
}