C++求数组补码的程序应该怎么写

数组元素有2048个,全部为十进制的,现在要将数组元素全部转换为补码形式表示。代码应该怎么写?

#include<iostream.h>
main()
{
char cc[8];
int a[8],b[8],i,j,c=0;
for(i=0;i<8;i++)
{
cin>> cc[i];
a[i]=b[i]=cc[i]-48;
}
if(a[0]==1)
{
cout<<"原码为:";
for(i=0;i<8;i++)//原码
cout<<a[i];
cout<<"反码为:";
cout<< "1";
for(i=1;i<8;i++)//负数反补不同
{
if(a[i]==0) //反码
cout<<"1";
else
cout<<"0";
}
cout<<"补码为:";
cout<< "1";
if(b[7]==0)
{b[7]=0;c++;}
if(c)
{
for(i=1;i<7;i++)
{
if(b[i]==0)
b[i]=1;
else
b[i]=0;
}
b[7]=0;
b[6]++;
for(i=6;b[i]==2;i--)
{
b[i]=0;
b[i-1]++;
}

for(i=1;i<8;i++)
cout<<b[i];

}
else
{
for(i=1;i<7;i++)
{
if(a[i]==0)
cout<<"1";
else
cout<<"0";
}
cout<<"1";
}
}
else
{
cout<<"原码为:";
for(i=0;i<8;i++)//正数原反补一样
cout<<a[i];
cout<<"反码为:";
for(i=0;i<8;i++)
cout<<a[i];
cout<<"补码为:";
for(i=0;i<8;i++)
cout<<a[i];
}
}


#include <iostream>
#include <limits.h>
/**
十进制转补码
*/
void bin(int deg)
{
    int i;
    unsigned int mask = 1 << CHAR_BIT*sizeof(int)-1;
    for (i = 1; i <= sizeof(int)*CHAR_BIT; i++) {
        putchar(deg&mask ? '1' : '0');
        if (i % 8 == 0) {
            putchar(' ');
        }
        mask >>= 1;
    }
}
int main(int argc, char* argv[])
{
    bin(-2);
    return 0;
}

https://blog.csdn.net/wuguai4/article/details/7311953 https://blog.csdn.net/wuguai4/article/details/7311953

不需要特意对保存的数据进行补码运算,因为不论是在嵌入式系统,还是PC机,服务器,内存中的任何数据都是以补码形式存在的。

设置一个2048次循环,每次循环把一个元素转换成二进制数字,再每位取反,末尾加一,,