题目描述:
给出一个16位二进制数的原码,能够得到该数的补码。
输入格式:
一个只包含0和1的16位字符串,表示整数的原码。
输出格式:
输入的整数的补码,用只包含0和1的16位字符串表示。
请注意行尾输出换行。
样例输入:
样例1 1000000000011111 样例2 1000000000000000
样例输出:
样例1 1111111111100001 样例2 0000000000000000
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
char a[17];
cin>>a;
if(a[0]=='1'){
for(int i=1;i<16;i++){
if(a[i]=='1'){
a[i]='0';
}else if(a[i]=='0'){
a[i]='1';
}
}
a[15]++;
for(int i=15;i>=0;i--){
if(a[i]=='2'){
a[i]='0';
a[i-1]++;
}
}
}
cout<<a;
return 0;
}