輸出 -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
總結:右移位就是向下取整。
計算機基礎運算子
算術運算子 單目 取正 取負 自增1 自減1 雙目 取餘 三目 a b?true false 說明 當a大於b的時候,為true 也就是冒號之前的值 否則為false 關係運算子 等於符號 不等於符號 大於符號 小於符號 大於等於符號 小於等於符號 位運算子 位運算子 與 非 或 異或 用來對二進位...
計算機的異或運算子
在練習2014年迅雷校招筆試題的第13題,題目如下 13 整數int i 0xfe78da45 int k 0xac3189b2 則i k的值為 a 0x524953f7 b 0xac308800 c 0xfe79dbf7 d 0x0000001 下面簡單介紹介紹一下異或運算子 計算機異或運算子 用...
由C 中的自增 自減運算子引發的思考
今天看到csdn上又有初學c 的朋友問到c 中自增 自減運算子字首 字尾形式的運算子使用的問題,覺得這個問題很普遍的,應該問到的挺多的,這麼多年在考試題 面試題中幾乎是個必考的問題,先不去說相關的知識點,我就想看一下關於這個問題討論的現狀,結果發現很多人討論得還挺 深入 比如 int n 0,m 0...