答案Re: 一个有趣的计算机问题,在线等答案# EE - 电子工程
i*o
1 楼
关键是branching. 判断是否为0,与bit-wise运算都在一个cycle内完成.
如果学过compute architecture 的话, 应该知道branch 对 deep pipe-line 的影响.
原题中说了,决大多数情况下,没有0,也是说,for loop 不会提前结束.
所以答案是:
int result = a[0];
for(int i=1; i result &= a[i];
if (result)
return true;
else
return false;
当然如果知道一些关于n的信息, 可以用 "loop unrolling" 去进一步优化.
如果学过compute architecture 的话, 应该知道branch 对 deep pipe-line 的影响.
原题中说了,决大多数情况下,没有0,也是说,for loop 不会提前结束.
所以答案是:
int result = a[0];
for(int i=1; i
if (result)
return true;
else
return false;
当然如果知道一些关于n的信息, 可以用 "loop unrolling" 去进一步优化.