#include <stdio.h>
void add(unsigned int x, unsigned int y)
{
unsigned int xh=0,xl=0,yh=0,yl=0,sumh=0,suml=0,sum=0;
xh = x >>16; //x的高16位
xl = x & 0xffff;//x的低16位
yh = y >>16;
yl = y & 0xffff;
suml = xl + yl; //x,y低位相加
sumh = xh + yh; //x,y高位相加
if(suml > 0xffff)//产生进位
{
sumh += 1;
suml &= (~(0x1<<16));//进位标志清0
printf("%0#x+%#0x=0x%x%04x\n",x, y,sumh, suml);
}else
{
sum |= sumh<<16;
sum |= suml;
printf("%0#x+%#0x=0x%x\n",x, y,sum);
}
}
int main()
{
unsigned int x,y;
printf("请输入两个16进制的数\n");
scanf("%x %x",&x, &y);
add(x,y);
main();
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)