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

有两个32bit的数A、B,使用下面方式得到32bit的数C、D。哪一种可以使用C、D得到A、B的值?
每个选项都是通过A,B来得到C,D的,则说明,A,B都是32位的int类型的数,可表示的数的范围为:-2147483648~2147483647。
(1) A选项中: C=(int32)(A+B),D=(int32)(A-B) ,如果能表示,则表示成A=(C+D)/2,B=(C-D)/2,考虑到C+D=(A+B)+(A-B)=2B,虽然B在这个范围内,但是2B有可能超出了32位Int类型的表示范围了。
(2) B,D,E选项同理都有可能超出32位int类型的表示范围。
(3)C选项中,C=A+B,D=B,得到A=C-D,B=D,根据原式C-D=A+B-B=A,D=B,肯定不会超出范围。
这里一定要用每个选项中的给的式子带入,因为题目中既然能够表示,则说明选项中的每个式子都在32位int类型的表示范围之类。

上一篇:一次因为文件名开头包含空格而导致FTP文件一直无法下载的悲剧!


下一篇:Android性能调优