python邂逅——符號運算(一)
1、布爾運算符
共三個
not
邏輯取反 eg:not 1 return false
and
優先返回假值的對象 eg:1 and 0 return 0 12 and 100 return 12
or
優先返回真值對象 eg:1 or 2 return 1 0 or 20 return20
2、位運算
& | ^ << >> ~
&:位與運算
輸入相同值則返回相同值,不同則返回0
eg:7 & 7 return 7 8 & 9 return 0
|:位或運算
輸入有真值則返回真值,輸入兩個假值則返回0
eg:2 | 3 return 2 0 | 0 return 0
^:位異或
相同為0,不同為1
eg:2 ^ 3 return 1 2 ^ 2 return 0
<<:左移
將數化為二進制數後向左移位,低位則補0
x << y 即將x化為二進制數後向左移y位
eg:2 << 3 return 16
>>:右移
將數化為二進制數後向右移位,低位則丟棄
x >>y 即將x化為二進制數後向右移y位
eg:2 >> 1 return 1
~:按位取反
了解按位取反之前需要知道一下知識點
(1)取反操作是在原碼上進行的!
(2)在計算機裏面,數是以補碼存儲的,但是轉換成其他進制需原碼
(3)原碼求補碼:取反,+1
(4)補碼求原碼:取反,+1
(5)正數的補碼即源碼,負數的補碼則為其對應正數二進制表示所有位取反(包括符號位,0變1,1變0)後加1
當輸入為正數時,求其補碼(即其原碼),再取反,再求原碼,即可得到取反後的數(符號帶上)
eg:~5
5的補碼為0000 0101 取反得1111 1010,可見取反後數為一個負數(二進制最高位表示符號,1為負,0為正),然後求其原碼得0000 0110,再轉換成十進制得數為-6
當輸入為負數時,求其補碼(即該數的正數取反後+1),再取反,再求源碼,即可得到取反後的數(符號帶上)
eg:~-6
-6的補碼為6的原碼取反後+1,6原碼為0000 0110,取反+1後得-6補碼為1111 1010,再取反得0000 0101,可見起取反後是一個正數,然後求其原碼得0000 0101,再轉換成十進制得數5
python邂逅——符號運算(一)