輸出 -50>>5,得到-2
輸出 -50/32得到-1
思考是如何在計算機內部實現的??
首先需要知道:計算機中所有數都是以補碼形式存儲的。
簡單說一下符號位0爲正,1爲負。移碼相反。
50的二進制是110010
,那麼-50的表示如下
- 原碼:
1110010
,即在二進制前面加上符號位 - 反碼:
1001101
,符號位不變,其他位取反 - 補碼:
1001110
,反碼+1即補碼。
所以-50在計算機內部存儲是1001110
,向右移動5位,爲了保持符號位不變,前面填1,所以變爲1111110
。
我們將這個補碼變爲原碼,得到1000010
,正是-2!!
右移帶符號,左移不需要。(左移往後面填0,不考慮符號位)
-50向左移動2位,輸出的是-200。我們算一下:
- 左移2位,得到
100111000
- 化爲原碼
111001000
,正好是-200
總結:右移位就是向下取整。