用c++实现输入两个十六进制数相加或相减,输出其二进制数相加或相减,结果为十进制数
如:输入:A+3AAA+BBB输出:0000000001010+0000000000011=130101010101010+0101110111011=5733(二进制数...
如:输入:A+3
AAA+BBB
输出:0000000001010 + 0000000000011 = 13
0101010101010 + 0101110111011 = 5733(二进制数为13位) 展开
AAA+BBB
输出:0000000001010 + 0000000000011 = 13
0101010101010 + 0101110111011 = 5733(二进制数为13位) 展开
2个回答
展开全部
#include<iostream>
using namespace std;
int gethex(char *s) { int r=0;
while ( *s ) {
r*=16;
if ( *s>='0' && *s<='9' ) r+=*s-'0';
else if ( *s>='a' && *s<='f' ) r+=*s-'a'+10;
else if ( *s>='A' && *s<='F' ) r+=*s-'A'+10;
s++;
}
return r;
}
void main() { int i,b,bb,x,y,z; char str[80];
while ( 1 ) {
cin>>str;
i=0; b=-1;
while ( str[i] ) { if ( str[i]=='+' || str[i]=='-' ) { b=i; break; } else i++; }
if ( b>=0 ) {
bb=( str[b]=='+' )?(0):(1); str[b]=0;
x=gethex(str); y=gethex(str+b+1); z=x; z+=( bb )?(-y):(y);
for ( i=0,b=0x1000;i<13;i++,b>>=1 ) cout<<(( x&b )?(1):(0));
cout<<' '<<(( bb )?('-'):('+'))<<' ';
for ( i=0,b=0x1000;i<13;i++,b>>=1 ) cout<<(( y&b )?(1):(0));
cout<<" = "<<z<<endl;
} else break;
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询