64,648
社区成员
发帖
与我相关
我的任务
分享
//两个数组中存的二进制数,求和
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
void ADD_BIT(int *result,int *p,int *q,int n);
int main() {
const int NUM=10;
int BitArray1[NUM]={1,0,1,1,1,1,0,0,1,1};
int BitArray2[NUM]={1,1,1,1,1,0,1,0,1,1};
int Result[NUM+1];
ADD_BIT(Result,BitArray1,BitArray2,NUM);
return 0;
}
void ADD_BIT(int *result,int *p,int *q,int n) {
int overflow=0;
for(int i=n-1;i<=0;--i) {
if( (*(p+i) +*(q+i)==2) && overflow==0 ) { *(result+i+1)=0;overflow=1; }
if( ( (*(p+i) + *(q+i))==2) && overflow==1) { *(result+i+1)=1;overflow=1; }
if( (*(p+i)+*(q+i))==1 && overflow==0) { *(result+i+1)=1;overflow=0;}
if( (*(p+i)+*(q+i))==1 && overflow==1) { *(result+i+1)=0;overflow=1; }
if((*(p+i)+*(q+i))==0 && overflow==1) { *(result+i+1)=1;overflow=0;}
else { *(result+i+1)=0; overflow=0; }
}
if(overflow==1) *(result)=1;
else *(result)=0;
cout<<"相加的二进制和是:"<<endl;
for(int i=0;i!=n+1;++i)
cout<<*(result+i);
cout<<endl;
return;
}
//两个数组中存的二进制数,求和
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
void ADD_BIT(int *result,int *p,int *q,int n);
int main() {
const int NUM=10;
int BitArray1[NUM]={1,0,1,1,1,1,0,0,1,1};
int BitArray2[NUM]={1,1,1,1,1,0,1,0,1,1};
int Result[NUM+1] = {0};//数组初始化
ADD_BIT(Result,BitArray1,BitArray2,NUM);
return 0;
}
void ADD_BIT(int *result,int *p,int *q,int n) {
int overflow=0;
for(int i=n-1;i>=0;--i)//你把大于号和小于号写反了
{
if( (*(p+i) +*(q+i)==2) && overflow==0 )
{
*(result+i+1)=0;overflow=1;
continue;//当前位运算结束以后保留当前位结果和进位标志后
//直接跳入下一个循环进行下一位的运算..
}
if( ( (*(p+i) + *(q+i))==2) && overflow==1)
{
*(result+i+1)=1;overflow=1;
continue;//同上
}
if( (*(p+i)+*(q+i))==1 && overflow==0)
{
*(result+i+1)=1;overflow=0;
continue;//同上
}
if( (*(p+i)+*(q+i))==1 && overflow==1)
{
*(result+i+1)=0;overflow=1;
continue;//同上
}
if((*(p+i)+*(q+i))==0 && overflow==1)
{
*(result+i+1)=1;overflow=0;
continue;//同上
}
else
{
*(result+i+1)=0; overflow=0;
continue;//同上
}
}
if(overflow==1) *(result)=1;
else *(result)=0;
cout<<"相加的二进制和是:"<<endl;
for(int i=0;i!=n+1;++i)
cout<<*(result+i);
cout<<endl;
getchar();
return;
}