位運算子的計算

pengguoping發表於2024-03-17

目錄
  • 位運算子學習
    • 一、二進位制中的原始碼、反碼、補碼
    • 二、java中的位運算子

位運算子學習

一、二進位制中的原始碼、反碼、補碼

  1. 符號
  • 有符號數

用最高位的0和1表示正數和負數,比如0000000111111100最 高位是0,所以該數字為正數。

  • 無符號數

全部二進位制均代表數值。

  • 有符號數的性質

    • 二進位制的最高位是符號位:0表示正數,1表示負數。
    • 正數的原碼、反碼、補碼都一樣
    • 負數的反碼=它的原碼符號位不變,其他位取反(0變1,1變0)
    • 負數的補碼=它的反碼+1
    • 0的反碼、補碼都是0
    • 在計算機運算的時候,都是以補碼的方式來運算的。

二、java中的位運算子

  • & 位運算與

    1. 先轉化為二進位制,然後相同位數比較。

    2. 兩位都為1 ,結果為1。

  • | 或運算子

    1. 先轉化為二進位制,然後相同位數比較。

    2. 只要有一個為1 ,結果為1。

  • ^ 異或運算子

    1. 先轉化為二進位制,然後相同位數比較。

    2. 兩位數不相同 ,結果為1。

  • << 左移符 2<<2

    1. 先轉化2為二進位制。10

    2. 左移2為,後面補0,變為1000.十進位制為8.

    3. 當左移的位數大於等於32的時候,要先對32求餘,再根據餘數左移。比如左移32,就和左移0位相同。

  • >>右移符

    1. 正數參考上邊

    2. 負數如下圖:

  • >>> 無符號右移

​ 1.無腦右移就可以,不用管符號。

相關文章