回覆列表
  • 1 # 使用者1943641456485

    先說一下布林值的與、或、異或、反運算:

    與運算,兩者都為真計算結果為真,反之為假:

    1 & 1 = 1,1 & 0 = 0,0 & 1 = 0,0 & 0 = 0;

    或運算,至少其一都為真計算結果為真,反之為假:

    1 | 1 = 1,1 | 0 = 1,0 | 1 = 1,0 | 0 = 0;

    異或運算,兩者不同為真,反之為假:

    1 ^ 1 = 0,1 ^ 0 = 1,0 ^ 1 = 1,0 ^ 0 = 0;

    取反運算,單目運算子:

    ~1 = 0,~0 = 1;

    以上例子 1 代表真,0 代表假。

    按位運算就是將二進位制位的每一位進行如上計算。

    如 2 | 5,轉換為二進位制(以 1 位元組 8 位為例):

    00000010 | 00000101,每個二進位制位分別進行或運算後得:

    00000111 即 7。雖然 7 = 5 + 2 但不代表 2 | 5 = 2 + 5。

    如:2 | 6 = 6,5 | 6 = 7,2 | 4 | 5 | 6 | 7 = 7。

    同理,按位與運算 2 & 5 的結果為 0:

    00000010 & 00000101 = 00000000

    按位與運算 2 & 6 的結果為 2(二進位制 00000010):

    00000010 & 00000110 = 00000010。

    同樣也能算出 2 ^ 6 的結果為 4(二進位制 00000101):

    00000010 ^ 00000110 = 00000100。

    取反運算 ~00000110 = 11111001。

    當然,對一個數字進行取反運算結果是多少,還與該型別是有符號還是無符號,佔用的位元組大小等有關。上面的例子只是以一個位元組為例進行說明。

  • 中秋節和大豐收的關聯?
  • 如何同時提升學術能力和程式設計能力?