如何用C语言设计一个32位无符号数长整数求和的函数?相加之和存储在两个32位无符号整数中 .输入的是两个 int型的,相
最佳回答
最新回答共有2条回答
-
2026-04-08 23:33:54高大的烤鸡
回复两个32位相加,结果肯定小于32位 * 2即33位,所以结果的两个无符数中高位的那个只能是0或者1当相加的两个数太大发生溢出的时候,结果的高32位手工置为1; 没有溢出的时候为0所以低32位就是直接相加,而高32位的值取决于相加的两个数是否会造成溢出如果溢出,直接相加的结果会被截断,所以c = a + b,如果发生溢出,截断后的c是小于a且小于b的,因为有部分被用来填充了上面就是原理void add(unsigned int lhs,unsigned int rhs,unsigned int *pResult){pResult[1] = rhs + lhs;pResult[0] = pResult[1] < lhs && pResult[1] < rhs;}void add2(unsigned lhs,unsigned rhs,unsigned *pResult){// 呃。。这是无聊的做法; 标准当中long long是64位的long long l = lhs;l += rhs;unsigned *p = (unsigned*)&l;pResult[0] = p[1];pResult[1] = p[0];}int main(){unsigned int result[2] = {0};add(1u,10u,result);printf("%d,%d\n",result[0],result[1]);add(1u,0xffffffffu,result);printf("%d,%d\n",result[0],result[1]);add(3u,0xffffffffu,result);printf("%d,%d\n",result[0],result[1]);add2(1u,10u,result);printf("%d,%d\n",result[0],result[1]);add2(1u,0xffffffffu,result);printf("%d,%d\n",result[0],result[1]);add2(3u,0xffffffffu,result);printf("%d,%d\n",result[0],result[1]);}
热门文章
- 康达学院专转本五年制
- 高考一个考场分ab卷吗
- not only but also用法
- 某物体做自由落体运动,从释放开始计时,则物体在前2s内的平均速度为______m/s,物体下落2m时的速度大小为______m/s.
- 三角函数公式大全表格
- 地理中考必背知识点2022
- 2013-2014学年小学六年级科学上学期期末考试试卷及答案
- 人教版2014-2015学年小学五年级英语第二学期期中教学质量检测试卷及答案
- 【Linux驱动开发】设备树详解(二)设备树语法详解
- 别跟客户扯细节
- 在别的城市买房子能落户吗
- 卖房前要把装修贷还完吗
- 高中政治教学提高教学效果的方法探究
- “互联网+”背景下的初中英语课堂教学改革与创新策略研究
- 2022年终止合同范本
- 租房合同范本范文
- 如何挑选土豆
- 如何挑选土鸡
