1. 程式人生 > >二進位制按位翻轉

二進位制按位翻轉

今天看到python中講到按位翻轉~x=-(x+1),其原理應該是二進位制的翻轉,網上查到一段解釋聽清楚的。

簡單的說例如1用32位二進位制儲存的結果是
00000000000000000000000000000001
這是二進位制,不是十進位制哦,那麼求反,或者說按位求反,或者說按位翻轉都一樣,結果就是
11111111111111111111111111111110
1變0,0變1能理解吧?
那麼-(x+1)是為什麼呢,是這樣假設x還是1,那麼x+1就是
00000000000000000000000000000010
不要奇怪,這是二進位制哦
那麼取-呢,就是取負呢,一般計算機用補碼,表示,補碼的取負就是按位取反之後再加1,先取反結果就是
11111111111111111111111111111101
最後再加個1就是
11111111111111111111111111111110

是不是和1直接取反的結果一樣?公式就是這樣