有两个32bit的数A、B,使用下面方式得到32bit的数C、D。哪一种可以使用C、D得到A、B的值?----阿里巴巴2015校招研发在线

来源:互联网 发布:淘宝油烟净化器 编辑:程序博客网 时间:2024/04/30 10:54

有两个32bit的数A、B,使用下面方式得到32bit的数C、D。哪一种可以使用C、D得到A、B的值?

正确答案: C   你的答案: F (错误)

C=(int32)(A+B),D=(int32)(A-B)
C=(int32)(A+B),D=(int32)((A-B)>>1)
C=(int32)(A+B),D=B
C=(int32)(A+B),D=(int32)(A+2*B)
C=(int32)(A*B),D=(int32)(A/B)
都不可以,可能溢出
  • 添加笔记
  • 收藏
  • 纠错


选C:
当A+B未溢出时,A=C-D;
当A+B溢出时,A=C+2^32-D; 因为溢出相当于减去了2^32。
所以合起来的计算公式为:  A=(C+2^32-D)%2^32 (取余数)
当A:INT_MAX B:INT_MAX,验证正确。

0 0