C/C++/C#/JAVA 左移&右移 運算

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 左移&右移 運算

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *