首先,本文爲原創,轉載請聲明。
直接上結果
然後
所以說移位除了快之外,負數出來的結果還不一樣
這是因爲
爲了能夠使用右移操作來完成除法運算,我們必須再定義一個移位操作:算術右移。5算術右移操作與普通的右移操作(邏輯右移)相同,只有一點例外:算術右移操作並不向最高位移入0,而是將最高位複製回自身;也就是說,在移位的時候並不對最高位進行修改,如圖2-12所示。
圖2-12 算術右移操作 |
算術右移操作一般都能夠產生希望的結果。例如,如果對-2($FE)進行算術右移操作,就可以得到-1($FF)。但是關於算術右移操作請記住一點,該操作總是將數值四捨五入爲小於或者等於實際結果的最接近的整數值。基於高級語言編程的經驗和截取整數的標準規則,大多數人都認爲這意味着除法的結果將總是被舍入爲0。但事實並非如此。例如,如果對-1($FF)進行算術右移,結果是-1而不是0。因爲-1小於0,所以算術右移操作將它四捨五入爲-1。這並不是算術右移操作中出現了錯誤;它只是使用了與整數除法不同(雖然有效)的定義。
這段的來源是http://book.51cto.com/art/201202/318129.htm