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

2021-10-07 16:07:15 字數 632 閱讀 3050

輸出 -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...