【发布时间】:2016-07-07 11:21:54
【问题描述】:
上周我在面试,有一个这样的测试:
计算N/9(假设N 是一个正整数),仅使用
左移、右移、加、减指令。
【问题讨论】:
-
N可以否定吗?如果是这样,右移是算术移位还是逻辑移位? -
@templatetypedef:您删除的答案几乎是正确的,但是该模式每 6 位重复一次,而不是每 4 位重复一次。使用
L=(1/16+1/32+1/64),您可以从L + L/2^6 + L/2^12 + L/2^18 + L/2^24 + L/2^30 == ~0.11111111110949423164获得非常接近1/9 的近似值。我刚刚进行了编辑以修复它,所以你应该取消删除它。我正在摸索两个分数的幂的总和,可能会在某个时候得到你的答案,但我不想输入它,因为你已经这样做了。 -
@PeterCordes 不幸的是,代码实际上不起作用,因为所有的部门都向下舍入。例如,如果您尝试像 9 / 9 这样的值,您会得到 0 而不是预期的 1。
标签: algorithm assembly cpu-architecture integer-arithmetic