20191031:Python取反運算詳解
取反運算:~3 == 4
1.對於數字 3 =======》轉換為二進制表示為011
2.對011取反為100
3.為什么表示-4
a.計算機用補碼表示負數,正數的補碼為其本身,負數的補碼為其反碼+1,現在我們一家知道了100表示的是一個負數的補碼,需要做的就是求出其原碼,轉換為十進制就是我們要求的結果
b.所以針對負數的補碼求其原碼具體過程如下:
i.如果補碼最高位是0,則原碼就是補碼,如0110 的源碼也是0110
ii.如果補碼的最高位是1,則原碼就是補碼的反碼+1,然后取相反數
011
001
-------------------------------------
100
以100為例:100的反碼為011,011+1 ==100,100轉換為十進制為4,取相反數為-4
===========================================================================================
反推:~-4 == 3
1.-4在內存中存儲形式為100(存的是補碼),根據前面b步驟表示負數補碼求源碼的過程,源碼為反碼011+1 = 100======》-4的源碼為100
2.對-4的源碼取反 011,011首位是0,表示正數,所以表示3
關鍵知識點:計算機在內存中存儲數據是以補碼的形式存儲,所謂的取反運算是針對源碼來計算的。
1.正數的,反碼,補碼為其本身
2.負數的,反碼為其符號位不變,其他位取反
3.負數的,補碼為其反碼+1
4.負數的補碼為其反碼+1
===========================================================================================
總結:
計算機對一個數求反的過程
1.先求出其源碼(因為內存中存的都是反碼)
2.對源碼進行取反運算
3.將取反以后的值轉換為源碼
4.將源碼轉換為十進制真值