原码转反补码

发布时间 2023-10-21 09:20:07作者: 王ys
#include <iostream>
using namespace std;
int main(){
	string str;
	char t;
	bool jinwei=true;
	bool tf;
	cin>>str>>t;
	if(str[0]=='0'&&t=='f'){
		cout<<str;
	}else if(str[0]=='1'&&t=='f'){
		for(int i=1;i<=str.size();i++){
			if(str[i]=='0'){
				str[i]='1';
			}else if(str[i]=='1'){
				str[i]='0';
			}
		}
		cout<<str;
	}
	
	if(str[0]=='0'&&t=='b'){
		cout<<str;
	}else if(str[0]=='1'&&t=='b'){
		for(int i=1;i<=str.size();i++){
			if(str[i]=='0'){
				str[i]='1';
			}else if(str[i]=='1'){
				str[i]='0';
			}
		}
		
		for(int i=str.size()-1;i>1;i--){
			if(str[i]=='1'){
				tf=true;
			}else if(str[i]=='0'){
				tf=false;
			}
			if(!tf){
				break;
			}
		}
		if(tf){
			cout<<"11";
			for(int i=0;i<str.size()-1;i++){
				cout<<'0';
			}
			return 0;
		}
		for(int i=str.size()-1;i>=1;i--){
			if(str[i]=='0'){
				if(jinwei==true){
					str[i]='1';
					jinwei=false;
					break;
				}
						
			}else if(str[i]=='1'){
				if(jinwei==true){
					str[i]='0';
					jinwei=true;
				}
			}
		}
		for(int i=0;i<str.size();i++){
			cout<<str[i];
		}
	}
	return 0;
}