5E - A + B Again

Posted goldenretriever

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5E - 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

// printf函数中%x、%X区分大小写,且输出无符号整数(不输出前缀0x、0X)
// scanf函数中%x、%X不区分大小写
技术图片
 1 #include<stdio.h>
 2 int main()
 3 {
 4     __int64 a, b, sum;
 5     while(scanf("%I64X %I64X", &a, &b)!=EOF)
 6     {
 7         sum=a+b;
 8         if(sum<0)
 9         {
10             sum=-sum;
11             printf("-");
12         }
13         printf("%I64X
", sum);
14     }
15     return 0;
16 }
View Code
// 补充->补码
计算机中的符号数有三种表示方法,原码反码和补码
三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”(0有两种表示:+0和-0),
而数值位,三种表示方法各不相同。

正数

正整数的补码是其二进制表示,与原码相同

【例1】+9的补码是00001001。

备注:这个+9的补码是用8位2进制来表示的。

补码表示方式很多,同一个数字在不同的补码表示形式中是不同的。除了8位2进制,还有16位二进制补码表示形式,以及32位二进制补码表示形式,64位进制补码表示形式等。每一种补码表示形式都只能表示有限的数字。

负数

求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1

【例2】数0的补码表示是唯一的。

[+0]补=[+0]反=[+0]原=00000000

[-0]补=11111111+1=00000000

转化为原码

已知一个数的补码,求原码的操作其实就是对该补码再求补码:

⑴如果补码的符号位为“0”,表示是一个正数,其原码就是补码。

⑵如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。

【例4】已知一个补码为11111001,则原码是10000111(-7)。

因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”。

其余七位1111001取反后为0000110;再加1,所以是10000111。

补码的绝对值

【例5】-65的补码是10111111

若直接将10111111转换成十进制,发现结果并不是-65,而是191。

事实上,在计算机内,如果是一个二进制数,其最左边的位是1,则我们可以判定它为负数,并且是用补码表示。

若要得到一个负二进制补码的数值,只要对补码全部取反并加1,就可得到其数值。

如:二进制值:10111111(-65的补码)

各位取反:01000000

加1:01000001(+65)










以上是关于5E - A + B Again的主要内容,如果未能解决你的问题,请参考以下文章

bypass again

A + B for you again

HDU 2057: A + B Again

HDU 1867 A + B for you again

hdu 1867 A + B for you again

题解报告:hdu 2057 A + B Again