1. 程式人生 > >Python的按位取反運算子~

Python的按位取反運算子~

按位取反運算子~很少用到,今天看《byte of Python》書中舉例,這裡學習一下,再複習一下計算機的基礎知識。

按位取反運算子,用來對一個二進位制數按位取反,即將0變1,將1變0,按理說十進位制的5(0000 0101)按位取反應該為(1111 1010)十進位制250,但是在Python中運算結果並非如此,結果如下:
>>> ~-6
5
計算機中的符號數有三種表示方法,即原碼、反碼和補碼。三種表示方法均有符號位和數值位兩部分,符號位都是用0表示“正”,用1表示“負”,而數值位,三種表示方法各不相同。在計算機系統中,數值一律用補碼來表示和儲存。原因在於,使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。
正整數的補碼是其二進位制表示,與原碼相同 。
負整數的補碼,將其對應正數二進位制表示所有位取反(包括符號位,0變1,1變0)後加1。
Python按位取反運算:
>>> ~-6
5
運算分析:
-6的補碼是+6(0000 0110)取反後再+1,為(1111 1001)+(0000 0001)=(1111 1010),
,也就是計算機中-6是用(1111 1010)來儲存的,(1111 1010) 按位取反得到(0000 0101)這就是答案5
百度百科