算法如下:
res <- 0
for i from 15 downto 0 do:
change the ith bit of result to 1
if res^2 > x then:
change the ith bit of res back to 0
return res
我完全理解它是如何工作的,但我不知道这个方法叫什么。我一直在寻找维基的平方根计算方法,但无济于事。这是逐位数字的方法吗?
(相关:How to compute the integer square root of a number in x86-64, without using div?)
答案 0 :(得分:3)
正如Peter Cordes在评论中提到的,这是digit-by-digit algorithm(这里是二进制数字)。
这是一种二元搜索。如果平方结果接近x
但不超过它,则设置第i位,因此增加两个近似值所需的功率会更好更好。