1. 程式人生 > >位運算,效率高

位運算,效率高

1、先理解原碼、反碼、補碼

  正數的原碼、反碼、補碼都一樣。

    舉例  10為例。

 

  關鍵是負數。

      原碼:

      反碼:最高位不變,其餘的取反得到:1111  1111  1111  1111  1111  1111  1111  0101

      補碼:等於反碼加1。         1111  1111  1111  1111  1111  1111  1111  0110

2、位運算

  位運算子:運算元是整數,但是操作負整數時,用的是補碼!!!!!

  左移   << :  右邊補0

  右移   >>:   左邊補0或1,如果原數最高位是1就補1,是0就補0.

  無符號右移   >>> :  左邊補0

  按位與  & :二進位制對應位置取與  ,同時為1才為1,否則為0

  按位或  | :二進位制對應位置取或  ,有一個為1就為1

  按位異或運算 ^ :二進位制對應位置取異或  ,兩者不同才為1

  按位取反  ~ :二進位制對應位置取反  ,原來是1,變為0,原來是0變為1

  說明:位運算子都是機器數直接運算的