29. Divide Two Integers
分析
用位运算模拟除法过程
例如,对于$\frac{x}{y}=k$, 将k转换成2进制的形式,有$k = 2^{0} + 2^{1} + … + 2^{31}$
我们可以将每一位的值存下来,然后从高位向低位遍历,只要 x 大于当前位的值,x 就减去当前位的值
又因为$x=yk=y2^0+y2^1+…+y2^{31}$,所以每次 x 减去第i位的值时,最终要求得的商就加上 $2^{i}$
C++代码
|
|
用位运算模拟除法过程
例如,对于$\frac{x}{y}=k$, 将k转换成2进制的形式,有$k = 2^{0} + 2^{1} + … + 2^{31}$
我们可以将每一位的值存下来,然后从高位向低位遍历,只要 x 大于当前位的值,x 就减去当前位的值
又因为$x=yk=y2^0+y2^1+…+y2^{31}$,所以每次 x 减去第i位的值时,最终要求得的商就加上 $2^{i}$
|
|