0

给定以下公式:

(((a-b)>>3) + c-d+4)<<2 

而且每个变量都是一个8位的寄存器,需要找几位才需要结果才不会OVERFLOW

我认为答案是11

我们可以采取的最大数量(a-b) + the biggest number in (c-d+4)

如果有人能解释一下,那就太好了。

4

1 回答 1

0

我认为你在正确的轨道上,我们应该尽可能地做大,所以我们设置a-b, , ,和.c-d+4a=255b=0c=255d=0

左移运算符部分的结果为(((a-b)>>3)=31(5 位)。

并且c-d+4=259(这里需要 9 位)。

31+259=290(所以这里我们需要 9 位)。

最后(290<<2)=1160我们左移 2 次,最终需要 11 位,它可以存储一个高达 2047 的值。

于 2017-01-16T21:34:29.593 回答