由右移運算符引發的思考(計算機原理)

輸出 -50>>5,得到-2
輸出 -50/32得到-1

思考是如何在計算機內部實現的??
首先需要知道:計算機中所有數都是以補碼形式存儲的。
簡單說一下符號位0爲正,1爲負。移碼相反。
50的二進制是110010,那麼-50的表示如下

  1. 原碼:1110010,即在二進制前面加上符號位
  2. 反碼:1001101,符號位不變,其他位取反
  3. 補碼:1001110,反碼+1即補碼。

所以-50在計算機內部存儲是1001110,向右移動5位,爲了保持符號位不變,前面填1,所以變爲1111110
我們將這個補碼變爲原碼,得到1000010,正是-2!!
右移帶符號,左移不需要。(左移往後面填0,不考慮符號位)
-50向左移動2位,輸出的是-200。我們算一下:

  1. 左移2位,得到100111000
  2. 化爲原碼111001000,正好是-200

總結:右移位就是向下取整。

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