Python中按位取反運算符(~)在計算機中的計算過程

1. 原碼、反碼、補碼三者之間的關係

計算機中的數值是以二進制碼的方式存儲的,而且是以補碼的方式存儲的,數值的運算也是以補碼的形式進行運算。我們通常看到的數值一般是十進制數,可以簡單地理解爲計算機將補碼轉換成原碼,然後再將原碼轉換成十進制顯示出來。

原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值。

        正數的反碼是其本身,負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反

        正數的補碼就是其本身,負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)

正數:[+1] = [00000001]原 = [00000001]反 = [00000001]補

負數:

[-1]原 = 10000001

[-1]反 = 11111110

[-1]補 = 11111111

2. Python中按位取反(~)運算符的計算過程

計算機中的數值是以補碼存儲的

① Python中對正數按位取反:~1 = -2

[+1]原 = [+1]反 = [+1]補 = 0 0001

計算機中存儲的時 0 0001,是正數1

按位取反:1 1110

1 1110的反碼: [1 1110]反 = [1 0001]

末位加一:1 0010,即爲-2

 

② Python中對負數按位取反:~-2 = 1

[-2]原 = 1 0010

[-2]反 = 1 1101

[-2]補 = 1 1110

計算機中存儲的是 1 1110,是負數 -14

按位取反:0 0001

正數的反碼和補碼相同,即爲1

總結,簡單的記憶方法:~a = - (a + 1)

 

 

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