#include<stdio.h>
#include<string.h>
int HexToDec(char[],char[]);
void strRev(char str[]);
int main()
{
int t,a,b,c;
char str[15],num1[5],num2[5],bin1[15],bin2[15],opt;
//freopen("in.txt","r",stdin);
scanf("%d\n",&t);
while(t--)
{
gets(str);
sscanf(str,"%s %c %s",num1,&opt,num2);
a=HexToDec(num1,bin1);
b=HexToDec(num2,bin2);
if(opt=='+')
c=a+b;
else
c=a-b;
printf("%s %c %s = %d\n",bin1,opt,bin2,c);
}
return 0;
}
int HexToDec(char num[],char bin[])
{
int dec=0,i,j,k=12,n;
for(i=0;i<=12;i++)
bin[i]=48;
bin[13]='\0';
//Hex to Decimal
for(i=0;num[i];i++)
{
if(num[i]<65)
n=num[i]-48;
else
n=num[i]-55;
dec=dec<<4;
dec=dec|n;
}
//Hex to binary
strRev(num);
for(i=0;num[i];i++)
{
if(num[i]<65)
n=num[i]-48;
else
n=num[i]-55;
for(j=1;j<=4;j++)
{
bin[k--]=(n&1)+48;
n=n>>1;
}
}
return dec;
}
void strRev(char str[])
{
int i,len=strlen(str),n=len/2;
for(i=0;i<n;i++)
{
str[i]=str[i]^str[len-i-1];
str[len-i-1]=str[i]^str[len-i-1];
str[i]=str[i]^str[len-i-1];
}
}
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.