乘除法是我們再熟悉不過的算數計算操作。在我們的認知中, 乘法的本質是加法,除法的本質是減法 。在計算機中,乘除法的底層實現也正是通過加減操作完成的
位移操作,就是對壹個n進制的數按位進行左移或者右移。 左移壹位,擴大n倍,等於乘以n;右移壹位,縮小n倍,等於除以n(指取整的除法)
例如:
十進制數1234,左移壹位,得12340,也就是乘以10;右移壹位,得123,也就是除以10取整
可以看到,位移只需要進行非常簡單的左右移動操作,就實現了n倍增/n倍減的效果,比基於反復加減的乘除法更加高效
在計算機中,都以二進制方式存儲數字。因此,在計算機中對數字進行位移操作,是在進行乘以2/除以2的操作
以二進制數111(十進制7)為例,左移壹位,得到1110(十進制14);右移壹位,得到11(十進制3)
例1
leetcode 50
實現pow(x, n)函數,計算x的n次冪
(也就是通過分解指數n為2的i次方的和形式實現 快速冪 )
例2
leetcode 29 計算兩數的商(取整)