常見問題:什麼做的運營商和LT;<,>>中&放大器;,|, 和^做什麼? 這是Python的位運算符。 序言:二進制補碼數 所有這些運營商的某些共同點 - 他們是“按位”操作。 也就是說,他們對號碼(通常)操作,但不是治療該號碼就好像它是一個單一的值,他們把它當作好像它是位,採用二進制補碼的二進制串。 甲二進制補碼是一樣的傳統二進制表示positve整數但為負數稍有不同。 負數是通過在它們的絕對值進行二進制補操作來表示。 所以補碼二進制的簡短摘要是為了: 二進制補碼的正整數: 0被寫為“0”的 1寫為“1”的 2寫為“10” 圖3是“11” 圖4是“100” 圖5是“101” 。 。 1029是“10000000101”== 2 ** 10±2 ** 2 + 2 ** 0 == 1024 + 4 + 1 二進制補碼的負整數: 負數寫的佼佼者,而不是一個前導零。 所以,如果你正在為你的二進制補碼數僅使用8位,那麼你從“00000000”治療模式,以“01111111”作為整個數字從0到127,並保留“1XXXXXXX”寫負數。 負數,-x,使用為(X-1)的所有的補充位的位模式寫入(從1切換到0或0到1)。 所以-1補充(1 - 1)=補體(0)=“11111111”,和-10是補體(10 - 1)=補體(9)=補體(“00001001”)=“11110110”。 這意味著,負數走一路下跌至-128(“10000000”)。 當然,Python不使用8位數字。 它曾經使用,但是多少位是當地的到你的機器,但因為這是不可移植,最近轉為使用位無限多。 因此,數-5是位運算符視為它被寫入“。1111111111111111111011”。 呼! 隨著中報頭輸出方式(哎,你可能知道這一點的話),運營商很容易解釋: 該運營商: X - LT;< ÿ返回x的比特移位到由y處留下(和新位上的右手側是零)。 這是與由2 **ý相乘的X. X - GT;> ÿ返回x的比特由y位右移。 這是相同的//'由2 **ý荷蘭國際集團的X. X'放大器; Ÿ是否是“按位與”。 輸出的每一位是1,如果x和y的相應位為1,否則它為0 X | Ÿ是否是“按位或”。 輸出的每個比特是0,如果x和y的對應位是0,否則是1。 x返回x的補體 - 你獲得通過切換各1為0的數目和每個0為1。這是相同的-x - 1的x ^ý是否一個“按位異或”。 輸出的每個比特是相同的x中的相應的位,如果在y表示位為0,並且它是位的x中的補體,如果在y表示位為1。 只記得大概在負數的無窮系列的第1位,而這些都應該是有意義的。 其他類別 還有一點:Python允許操作符重載,所以一些類可能被寫入允許位運算符,但也有一些其他的意思。 例如,對於Python 2.3的新套模塊使用| 並與放大器; 工會和路口。