HDOJ2057A+B Again笔记

题目:A + B Again
Problem Description
给出两个十六进制的数,求他们的和
关键:理解十六进制在计算机如何存储,然后用printf函数是如何显示出来的。无论什么进制的数,在计算机都是以二进制的补码形式存储的,而格式转换符决定了以什么格式读取数据,和输出数据。
十六进制,八进制和十进制的不同地方,如果要输出的负数,十六进制和八进制是不会有负号的,只会输出补码,例如十六进制数a = -0x1,则输出是FFFFFFFF,(假设a是32为整数,),八进制数a = -01,输出时37777777777
所以这道题的关键是要处理如果得到的值是负值,需要将他变成正值,再添加一个符号。
在正数前面的+是无所谓的。

#include <cstdio>
int main() {
    long long int A, B;
    while(scanf("%llX %llX", &A, &B) != EOF) {
         if(A + B >= 0) {
             printf("%llX\n", A + B);
         }
         else {
             printf("-%llX\n", -(A + B));
         }
         //任何数都是以二进制在机器中存储的,而格式转换符只是将二进制数转换成所需要的进制,十进制比较方便,是带符号输出的 
    }
    return 0;
}

这个是按照数来做的,还有一种思路,当成字符串来处理,没做出来。WA。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Greatljc

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值