Java 中的移位那些事

移位

之所以會有移位操作,最重要的因爲計算機中的數據就是用二進制的格式來保存的。所以,在計算機中的加減乘除都是要計算機利用移位操作來完成的。
但是移位會伴隨着一個問題的產生,就是移位操作後的,空出來的位置要補什麼?根據補充的邏輯不同,移位操作又可以分成 “邏輯移位”“算術移位” ,而且二者最主要的區別是在一個動作右移的動作上。因爲數字在計算機中都是以二進制來存儲的,這樣就會產生一個問題,你要如何區別一個數是正數還是負數?按照計算機裏的做法,就是如果程序中有設定,那麼最高位也就是最左邊的那個位置,就是**“符號位”** 也就是專門用來標識正負數用的,“0” 爲正數,“1”爲負數。而對於 左移操作 來說,不管是 “邏輯” 還是 “算術”,移位操作產生的空位都是補 “0”
左移操作
而區別就出現右移操作。
在這裏插入圖片描述

邏輯移位

邏輯右移的操作不管你是正數還是負數(也就是不管最高位是 “0”還是 “1”),空出來的最高位都是補“0”

算術移位

算術右移:正數的最高位補 “0”,負數最高位補 “1” 。
在這裏插入圖片描述

Java 中的移位操作

邏輯移位 “>>>”

最高位直接補“0”。

算術移位 “>>”

正數最高位補 “0”,負數最高位補 “1”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章