C/C++/C#/JAVA 左移&右移 運算
C/C++/C#/JAVA 左移&右移 運算
資料來源: https://www.itread01.com/content/1546923444.html
https://edisonx.pixnet.net/blog/post/34033421
https://kknews.cc/code/kyqv2j8.amp
01.左移操作
操作符: <<
含義:顧名思義就是把一個數的所有位都向左移動若干位,在C用用<<運算符標記
例:
int i = 1; i = i << 2;
說明:
1的二進位為00000001(這裡用8位標示,不同系統,不同的位數),向左移兩位,即把1向左移動兩位,後面補兩個0,即 00000100,轉換成10進位就變成了4
所以說左移1位相當於乘以2,那麼左移n位就是乘以2的n次方了
02.右移操作
操作符: >>
含義:右移對符號位的處理和左移不同,對於有符號整數來說,比如int型別,右移會保持符號位不變
例:[左邊移入的位用0填充]
int i = 150;//二進位為10010110 i = i>>2;
說明:
i向右移動兩位,則最後面兩位移除,最開始的添加兩個0,變成00100101,十進位為37
應用:
△乘以2的n次方
int a, b; a = b*128; a = b << 7; // 128 = 2^7
△除以 2 的 n 次方
int a, b; a = b / 128; a = b >> 7; // 128 = 2^7
One thought on “C/C++/C#/JAVA 左移&右移 運算”
程式設計師 最高等級 靠數學
簡單(基礎)的數學也可以有高效率