python 取反操作符( )

2021-10-08 15:34:19 字數 1155 閱讀 1340

誤人子弟呀 誤人子弟,看了幾篇部落格,真的是坑

~ :按位取反運算子:對資料的每個二進位制位取反,即把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 就是-2在計算機裡面的原型

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

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

#################

~22 原碼,反碼,補碼: 0000 0000 0000 0010

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

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

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

恰好,④補碼求原碼: 取反,+1

取反: 1000 0000 0000 0010

加 1: 1000 0000 0000 0011

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

1000 0000 0000 0011 = -3

#################

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

對Python中的取反操作符 原理的理解

在理解取反運算之前我們首先的了解什麼是原碼,反碼,補碼。建議去看這篇文章 轉 原碼,反碼,補碼的深入理解與原理。我們需要了解 正數的反碼,補碼都等於原碼,eg 12 原碼 01100,反碼 01100,補碼 01100 負數的反碼等於 他的原碼除符號位外,按位取反 補碼等反碼加一,eg 12 原碼 ...

Python 切片操作符

python之切片操作符 slice 字串 列表 元組在python中都符合 序列 這一特徵,只要符合這一特徵的變數我們都可以用切片 slice 去訪問它們的任意部分。我們可以把序列想像成乙個佇列,我可能需要前面三位 後面三位 或從第三位後的四位 或隔乙個取乙個等,我們用切片操作符來實現上述要求。切...

python操作符大全

字串轉義序列 反斜槓 單引號 雙引號 a 系統響鈴 b 退格符 f 換頁符 n 換行符 r 回車符 t 橫向製表符 v 縱向製表符 字串格式化 d 格式化十進位制整數 i 格式化十進位制整數 o 格式化八進位制整數 u 格式化無符號整型 x 格式化無符號十六進製制數 小寫 x 格式化無符號十六進製制...