首页 > 编程知识 正文

二进制数的原码反码补码转换

时间:2023-05-03 07:01:38 阅读:200358 作者:362

#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;}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。