1. 程式人生 > >python邂逅——符號運算(一)

python邂逅——符號運算(一)

urn 其他 邏輯取反 即將 ret 按位取反 知識點 lse 進制

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邂逅——符號運算(一)