原码转补码反码

#include <bits/stdc++.h>
using namespace std;
string a;int c=0;
void fam(){
if(a[0]=='0'){
cout<<a;
}else{
cout<<'1';
for(int i=1;i<a.size();i++){
if(a[i]=='0'){
cout<<'1';
}else{
cout<<'0';
}
}
}
}
int bu(){
if(a[0]=='0'){
cout<<a;
}else{
for(int i=1;i<a.size();i++){
if(a[i]=='0'){
a[i]='1';
}else{
a[i]='0';
}
}
for(int i=0;i<a.size();i++){
if(a[i]=='1'){
c=1;
}else{
c=0;
break;
}
}
if(c==1){
cout<<"11";
for(int i=1;i<a.size();i++){
cout<<"0";
}
}else{
for(int i=a.size()-1;i>=1;i--){
if(a[i]=='0'){
a[i]='1';
break;
}else{
a[i]='0';
}
}
cout<<a;
}

}
}
int main(int argc, char** argv) {
int b;
cout<<"1 反码 2 补码";
cin>>b>>a;
if(b==1){
fam();
}else if(b==2){
bu();
}
return 0;
}

  

posted @ 2023-10-22 09:38  陈若麟  阅读(6)  评论(0编辑  收藏  举报