首頁  >  文章  >  後端開發  >  python中取反運算子怎麼使用

python中取反運算子怎麼使用

WBOY
WBOY轉載
2023-04-30 08:22:143215瀏覽

    python取反運算子

    ~ : 位元取反運算子:對資料的每個二進位位元取反,即把1變為0,把0變為1 。

    ~x 類似-x-1

    1、計算依據

    • #①正數的原碼、反碼、補碼都是一樣的

    • ②負數的補碼為符號位元不變,剩餘位元取反再加1

    • ③原碼求補碼: 取反, 1

    • ④補碼求原碼: 取反, 1

    • ⑤負數是以補碼儲存的

    • ⑥取反運算是在原碼上進行的

    • #⑦符號位,1表示負數,0表示正數

    #2、例子

    ~(-2)

    首先你要知道-2 在電腦裡面的二進位形式,由⑤和②可知:

    • #-2 原碼:1000 0000 0000 0010

    • -2 反碼:1111 1111 1111 1101 #符號位元不變,各位求反

    • #-2 補碼:1111 1111 1111 1110 #補碼= 反碼+ 1

    1111 1111 1111 1110 就是

    1111 1111 1111 1110 就是-2在電腦裡面的原型

    現在開始對他求反,符號位不變,

    按位取反: 0000 0000 0000 0001

    #很明顯是一個正數,其原碼為其本身,所以輸出為1.

    ~2

    2 原碼,反碼,補碼: 0000 0000 0000 0010

    #按位取反: 1111 1111 1111 1101

    這是一個負數該怎麼辦?能直接求嗎?

    很顯然是不行的,⑥說了:取反操作計算結果是在原碼上進行的,⑤也說了:負數是以補碼存儲的

    ##1111 1111 1111 1101是0000 0000 0000 0010 的反碼,但我們想要的是結果,而不是在計算機裡面的原型,

    恰好,④補碼求原碼: 取反, 1
    • #取反: 1000 0000 0000 0010
    • 加1:1000 0000 0000 0011

    #於是,我們得到了原碼,可以計算結果了

    1000 0000 0000 0011 = -3

    總之,取反很簡單,但是要注意,取反後是不是原碼,是否可以直接計算結果

    python數值取反問題~

    在python中,用取反符號~得到的並不是我們想像中的結果,總結一下規律,就是  (取反後的值)=  - (取反前的值)-1

    下面來分析一下

    例如對1取反,1的8位元二進位表示為:0000 0001 ,  取反後的結果是:1111 1110, 對計算機來說,二進位以1開頭表示的是負數, 所以這個1111 1110到底表示的是什麼負值呢,想要知道這個值,可以求它的補碼,即先取反碼:0000 0001,再加1:0000 0010,說明1111 1110 的原碼為0000 0010 也就是正數2, 所以1111 1110代表的就是負數-2 

    #下面再舉個例如

    對- 2 取反, -2的二進位表示為2的補碼,即0000 0010 > 1111 1101 > 1111 1110 ,-2的二進位就表示為1111 1110, 對它取反得到0000 0001的值為1 , 所以~(-2)= 1  ,  ~1=-2

    總結出來是:(取反後的值)=  -(取反前的值)-1###

    以上是python中取反運算子怎麼使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述:
    本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除