[signed] long long [int] 64 -2^63 ~ 2^63-1 %I64d
unsigned long long [int] 64 0 ~ 2^64-1 %I64u、%I64o、%I64x
所以直接输出的a+b 是两个正数的和。
至于是无符号,输入时间把符号位至1,按正数计算。至于sum=a+b。出现负数,是因为十六进制本身可以自动加减,只是在输出时间把符号位按正数处理了。
如果理解有误请指出。
+A -A +1A 12 1A -9 -1A -12 1A -AA
0 2C 11 -2C -90
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
_int64 a,b,sum;
while(scanf("%I64X %I64X",&a,&b)!=EOF){
sum=a+b;
if(sum<0){
sum=-sum;
printf("-");
}
printf("%I64X\n",sum);
}
}
[signed] long long [int] 64 -2^63 ~ 2^63-1 %I64d
unsigned long long [int] 64 0 ~ 2^64-1 %I64u、%I64o、%I64x
所以直接输出的a+b 是两个正数的和。
至于是无符号,输入时间把符号位至1,按正数计算。至于sum=a+b。出现负数,是因为十六进制本身可以自动加减,只是在输出时间把符号位按正数处理了。
如果理解有误请指出。