浮点的两倍,如何写运行高效?
近期看一份代码,比对其历史,发现一个有趣的现象,现把问题抛出来,供大家讨论。已知:double x, y;
// ...现要实现 y=2x 功能,以下写法哪种高效,为什么?
[*]y = x + x;[*]y = 2 * x;[*]y = 2.0 * x;[*] 更好的(留待你补充。。。)
2: y=2*x的效率应该最低,因为数2要转换为浮动点数。1或3哪个高效不是很明确,猜3最好。 还可以试一试比特位操作,将最高12位加1即可 也就是
y=x;
long long *px=(long long *)&y;
*px+=(1LL<<52);
页:
[1]