C#용 왼쪽 시프트 및 오른쪽 시프트 연산자(>> 및 <<)
5067 단어 csharp
首先 首先, 筆者 , 的 的 非常 簡單 簡單 簡單 簡單 簡單 將 進位制 進位制 轉換 轉換 為 十進位 制 制 制 制 制 制 制 制 制 制 位 位
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 ⭐ 팔로우
또는 커피를 사주세요 ⬇️ 감사합니다.
Reference
이 문제에 관하여(C#용 왼쪽 시프트 및 오른쪽 시프트 연산자(>> 및 <<)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/fakestandard/left-shift-and-right-shift-operators-and-for-c-27ib텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)