contributed by <eleanorLYJ
>
除了測驗題上的敘述,也閱讀Digit-by-digit calculation: Binary numeral system (base 2)
本筆記的變數的下標與作業說明順序相反
把 N 看為 某 bit pattern 的平方, 其中 可能是 或 0。我將 想成 2 的冪的係數
設
故
。
會有兩種情況
這算 n~0 逐一算 ,得知 m 等於多少時,使 值最接近
為了避免不要不斷的去算出,所以改成僅存每一輪的差異, 。
的更新為:
而 Y 的定義為上一輪的 P 與此輪的 P 的差異:
這裡的推導
接著在維基百科中說: 將 看成兩部分 與
接著看如何迭代
以下程式的變數意義:
b = = -
z =
m =
x =
用二分搜尋法尋找 Most Significant Bit (MSB)
一開始的 x
減1 是為了確保結果向上進位到下一個整數。而 r
用於累加位移位元數。
該程式碼會迭代x
多次,檢查特定的位元模式。它使用移位操作從中刪除已檢查的位元x
。首先檢查最高位元 (MSB > 16),接著每次檢查的位元都除以2。 最終有考量最後 x 等於 2 或 3 的情況會進位,而最終 x 等於 1 時不會進位