C#용 왼쪽 시프트 및 오른쪽 시프트 연산자(>> 및 <<)

5067 단어 csharp
前陣子 前陣子 前陣子 刷 leetcode 時 時 時 時 時 方式 可以 可以 使用 移位 移位 運算子 運算子 運算子 運算子 運算子 運算子 運算子 運算子 運算子 運算子 早 早 早 就 看 過 這個 運算 元 元 元 元 元 元 卻 沒 沒 實際 過 過 趁 這個 機會 快速 了解 移位 運算子 是 是 是 個 什麼樣 的 概念.. 機會 機會 機會

首先 首先, 筆者 , 的 的 非常 簡單 簡單 簡單 簡單 簡單 將 進位制 進位制 轉換 轉換 為 十進位 制 制 制 制 制 制 制 制 制 制 位 位 1110 轉換 成 成 十 進 位 位 位 位 14, 在 c# 中 可 直接 使用 Convert 來 來 來.實現進位之間的轉換

string binary = "1110";

// 二進位轉十進位, 第二個參數為 base
Convert.ToInt32(binary, 2);


如此 如此 透過 是 方法 方法 來 轉換 轉換 轉換 轉換 轉換 轉換 為了 了解 了解 二 進制 進制 的 應用 應用 應用 應用 應用 應用 應用 應用 不少 的 解法 解法 解法 解法 解法 其中 不少 不少 解法 解法 是 是 移位 運算子 運算子 運算子 運算子 起來 也 非常 簡潔 優雅 優雅 優雅 優雅 優雅 什麼 什麼 是 移位 移位 運算子?? 非常 也

移位運算子有兩種
  • 左移運算子<<
  • 右移運算子 >>

  • 區分 區分 也 也 易懂 易懂 易懂 易懂 易懂 方向 的 的 不同 不同 不同 不同 不同 不同 不同 以 1110 為 例 例 例 例 例 此 二 二 二 進位制 的 的 所有 位元 進行 左移 一 個 位元 位元 即將 即將 位元 往 左邊 左邊 左邊 左邊 移動 移動 一 位 最 最 最 最 最 最右邊 右邊 第一 第一 的 數 則 0, 得到 結果 為 為 11100, 若 左移 左移 兩 兩 兩 個 位元 則 為 111000 ; 反之右 移 則 向 向 右 右 移動 移動 對 對 1110 右移 個 個 個 個 個 個 則 則 則 則 則元得到 0111 ,若右移兩個位元則得 0011 .
  • 左移一個位元的表示方式為 num << 1
  • 左移一個位元的表示方式為 num << 2
  • 右移一個位元的表示方式為 num >> 1
  • 右移一個位元的表示方式為 num >> 1

  • 實際 實際 程式碼 使用 使用, 先 宣告 一 一 個 整數 整數 變數 num, 因為 該 該 變數 是 以 十 十 表示 之 之 之 之, 此 處 特意 註解 num. ,最後得十進位的結果.

    // 十進位 14, 二進位 1110
    int num = 14;
    
    // 向左移 1 位
    num = num << 1;
    
    // 得到十進位 28, 二進位 11100
    Console.Write(num);
    


    試試看右移一個位元

    // 十進位 14, 二進位 1110
    int num = 14;
    
    // 向左移 1 位
    num = num >> 1;
    
    // 得到十進位 7, 二進位 0111
    Console.Write(num);
    


    讀者有發現一件神奇的事嗎?



    如果我們向左移一個位元,其結果會是原本的兩倍,若向右位移一位,其結果會是原本的一半.

    有這麼神奇的事?試試看一次移兩個位元會發生什麼事

    int num = 20;
    
    // 80
    Console.WriteLine(num << 2);
    
    // 5
    Console.WriteLine(num >> 2);
    


    每增加一個位移的位元,就會作一次乘二或除二的動作,將 num=20 向左位移兩個位元,其結果就是 20 * 2 * 2 = 80 ,同理向右可倗秗20 / 2 / 2 = 5
    最後 最後, 移位 , 當然 也 有 指派 的 運算子 運算子 運算子, 若 要 將 將 num 位移 後 的 結果 給 給 給 給 num, 可以 這麼 寫 num = num >> 1, 也 可以 使用 使用 移位 指派 運算子 寫成 num >>= 1 左 左位移則是 num <<= 1 .這麼簡單的運算子,筆者真是太晚才想好好的認識它,收工!

    참조



    Left Shift and Right Shift Operators (>> and <<)


    글 읽어주셔서 감사합니다 🌷 🌻 🌼

    마음에 드셨다면 주저말고 하트 꾸욱 눌러주세요❤️
    또는 내 GitHub ⭐ 팔로우
    또는 커피를 사주세요 ⬇️ 감사합니다.

    좋은 웹페이지 즐겨찾기