#include <iostream>
#include <math.h>
#include <string.h>
using namespace std;
void ten2two(int ten,char data[100]){
//十进制数转二进制数,且最高位为符号位
int ten1 = abs(ten);
int i=0;
while(ten1>0){
data[i++] = ten1%2+'0';
ten1/=2;
}
if(ten>0)
data[i] = '0';
else
data[i] = '1';
}
void out(char *data){
for (int i = strlen(data)-1; i >= 0; --i)
cout << data[i] ;
cout << endl;
}
void Turn_fan(char *data){
//求二进制数的反码
if(data[strlen(data)-1]=='0')
return;
else{
for (int i = strlen(data)-2; i >=0 ; --i)
if(data[i]=='0')
data[i] = '1';
else if(data[i]=='1')
data[i] = '0';
return ;
}
}
void Turn_bu(char *data){
//求二进制数的补码
if(data[strlen(data)-1]=='0')
return ;
else {
for (int i = 0; i < strlen(data)-1; ++i) {
if(data[i]=='1')
data[i] = '0';
else{
data[i] = '1';
return ;
}
}
}
}
int main(){
int ten;
char data[100];
cin >> ten;
ten2two(ten,data);
cout << ten << "的原码为: " ;
out(data);
Turn_fan(data);
cout << "反码为:";
out(data);
Turn_bu(data);
cout << "补码为:" ;
out(data);
return 0;
}
二进制数的原码反码补码转换
最新推荐文章于 2024-04-27 11:45:35 发布