A + B Again
There must be many A + B problems in our HDOJ , now a new one is coming.
Give you two hexadecimal integers , your task is to calculate the sum of them,and print it in hexadecimal too.
Easy ? AC it !
Input
The input contains several test cases, please process to the end of the file.
Each case consists of two hexadecimal integers A and B in a line seperated by a blank.
The length of A and B is less than 15.
Output
For each test case,print the sum of A and B in hexadecimal in one line.
Sample Input
+A -A +1A 12 1A -9 -1A -12 1A -AA
Sample Output
0 2C 11 -2C -90
/************************************
十六进制的负数和十进制的负数不太一样
负数用十六进制表示,首先应该将其表示成二进制形式,然后变反码,再变补码
本题中求的负数是类似于十进制的那种表示
所以我们要先变成正数
然后十六进制表示
前面再加负号
************************************/
答案代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
long long int a, b, c;
while(~scanf("%llx %llx", &a, &b))
{
c = a + b;
if(c >= 0) printf("%llX\n", c);
else printf("-%llX\n", -c);
///printf("%x(小写)\n", c); //输出结果为:小写字母 例如 f
///printf("%X(大写)\n", c); 输出结果为:大写字母 例如 F
///输入时写 小写 x 和大写 X 是一样的,只有输出不一样
}
return 0;
}
/************************************
十六进制的负数和十进制的负数不太一样
负数用十六进制表示,首先应该将其表示成二进制形式,然后变反码,再变补码
本题中求的负数是类似于十进制的那种表示
所以我们要先变成正数
然后十六进制表示
前面再加负号
************************************/
其他人的答案:
1. https://blog.csdn.net/hpulw/article/details/50791138
2.