前言
除法指令在 CPU 中的執行周期相較於其它運算 (加/減/乘) 還要來得長,所以會盡可能的找替代方案來算出除法結果。這裡討論的是,當除以一個 2 的冪次方數時要怎麼減化過程,特別是被除數為負數時的情況。
問題敘述
基本上
以除法運算來看,取整數後即
在以位元運算來看
這與我們想要的結果 (floor
後的值,即
當 floor
,這與移位運算的特性一致;而當 ceil
,但此時移位運算是取 floor
,所以就會有誤。
因此,我們需要一個函數,當
證明
目標
要證明上式,必須先證明下式成立,
令
q 為除法商數且 r 為除法餘數。再將此試代入目標等式右邊
討論:
case 1
:如果
case 2
:如果
最後,再利用這個等式,可以得到若 x < 0
得證