考虑以下公式:
(((a-b)>>3) + c-d+4)<<2
并且每个变量都是 8位寄存器,需要找到几位需要的结果才不会 OVERFLOW 。
我认为答案是11
。
我们可以在(a-b) + the biggest number in (c-d+4)
获得的最大数字。
答案 0 :(得分:0)
我认为你走在正确的轨道上,我们应尽量让a-b
和c-d+4
尽可能大,所以我们设置a=255
,b=0
,{{ 1}}和c=255
。
左移操作员部分导致d=0
(5位)。
和(((a-b)>>3)=31
(此处需要9位)。
c-d+4=259
(所以这里我们需要9位)。
最后31+259=290
我们向左移动了2次,最终需要11位,这可以存储最多2047的值。