首先我們需要知道計算機存儲數據是以補碼的形式存儲的,正數的碼首位都是0,負數的碼首位都是1
正數的原碼、反碼和補碼是一樣的
例如7的原碼: 00000111
反碼:00000111
補碼:00000111
負數的原碼、反碼和補碼是不一樣
例如-7的原碼是:10000111
負數的反碼是首位不變,其他位取反 ,1取反是0,反之
所以-7的反碼:11111000
負數的補碼等於反碼+1
-7的補碼:11111001
我們常見的位運算,就是對存儲在計算中的補碼進行的,用補碼進行位運算,結果以原碼的形式輸出
例如 -7&7 = 00000111 &
11111001
結果是00000001, 也就是1
那么 -7|7 = 00000111 |
11111001
結果是11111111
很明顯這是一個負數
所以要得到他的原碼 必須-1 得到反碼
也就是11111110
再反碼基礎上,以首位不變,其他取反,可以得到 10000001
這樣我們就得到結果的原碼了
首位1代表負數
所以結果是-1
