python 中按原碼取反 按位取反

2021-09-25 12:01:26 字數 346 閱讀 6619

在python中,按位運算的結果與c/c++中位運算結果不同,原因主要是c/c++是按原碼來取反。

而在python中,取反的運算的流程是這樣的:

先獲得其二進位制(原碼),進行取反操作。

將第一步的結果,當作補碼。求這個補碼的原碼,這個原碼就是輸出的結果。

補 碼求原碼的過程,先減1,再取反。

由於是這樣的邏輯,導致了python中取反操作,等於在按原碼取反之後,多了乙個由補碼求原碼的步驟,導致了結果的偏差。

所以python中所有的取反操作,結果值都是原始值的負數再減一。

要想獲得按原碼來取反這個操作,唯一的辦法是:

與全部都是1的數進行異或操作,等價於取反

Python按位取反實現過程(原碼補碼)

對二進位制數按位取反時,輸出結果與 以為的結果 不一致。原因是計算機中數是以補碼形式進行儲存的。不涉及原碼補碼理論,僅記錄按位取反的實現過程。計算機中原碼補碼計算規則 計算機儲存8位,左到右為7 0,最高位為符號位,1為負,0為正 計算機中以補碼形式儲存 正數的原碼與補碼相同 負數的補碼為原碼按位取...

python語言按位取反 python的按位運算

華電北風吹 天津大學認知科學與計算重點實驗室 最後修改日期 2015 8 6 python提供了豐富的位運算操作符,例如按位與,按位或,按位異或,左移位,右移位和取反操作,例子 如下 a,b 45,83 bin a bin b 0b101101 0b1010011 a b,bin a b 127,0...

按位與 按位異或 按位取反

按位與 按位或 按位異或 1.按位與運算 按位與運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 否則為0。參與運算的數以補碼方式出現。例如 9 5可寫算式如下 00001001 9的二進位制補碼 00000101 5的二進位制補碼 0000...