20191031:Python取反運算詳解


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.將源碼轉換為十進制真值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM