博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
有两个32bit的数A、B,使用下面方式得到32bit的数C、D。哪一种可以使用C、D得到A、B的值?----阿里巴巴2015校招研发在线
阅读量:2386 次
发布时间:2019-05-10

本文共 348 字,大约阅读时间需要 1 分钟。

有两个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,验证正确。

转载地址:http://tgnab.baihongyu.com/

你可能感兴趣的文章
略论并行处理系统的日志设计
查看>>
开发人员应具备的产品设计意识
查看>>
MSComDlg.CommonDialog服务器不能创建对象错误的解决
查看>>
ArcGIS二次开发之读取遥感图像像素值的做法
查看>>
netcdf源码在windows上的编译
查看>>
慎用VC 6.0
查看>>
游戏杆编程心得
查看>>
周例会的作用
查看>>
字符集研究之多字节字符集和unicode字符集
查看>>
字符集研究之不同字符集的转换方式
查看>>
一个应用程序无法启动错误的解决过程
查看>>
除虫记——有关WindowsAPI文件查找函数的一次压力测试
查看>>
Incredibuild导入key的方式
查看>>
跨平台C++开源代码的两种常用编译方式
查看>>
Eclipse的搜索技巧
查看>>
centos常用命令二
查看>>
通过修改kong属性解决不能获取外网域名的问题
查看>>
Eclipse带命令行参数调试
查看>>
php smtp发送邮件
查看>>
yii框架的404、500等异常处理
查看>>