Redian新闻
>
答案Re: 一个有趣的计算机问题,在线等答案
avatar
答案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; iresult &= a[i];
if (result)
return true;
else
return false;
当然如果知道一些关于n的信息, 可以用 "loop unrolling" 去进一步优化.
avatar
J*r
2
如果考虑pipeline,你说的这个可能是对的.

【在 i*o 的大作中提到】
: 关键是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

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。