1. << 左移
數學意義:在數字沒有溢出的前提下,對於正數和負數,左移一位相當於乘以2的1次方,左移n位相當於乘以2的n次方。
比如 5 << 2 = 5 * 2的2次方 = 5 * 4
2. >> 右移
數學意義:在數字沒有溢出的前提下,對於正數和負數,右移一位相當於除以2的1次方, 右移n位相當於除以2的n次方。
比如 11 >> 2 = 11 / 2的2次方 = 11 / 4
3. >>> (無符號右移)
int a = 8;
int b = 32;
a >>> b 等價於 a >>> (b%32)
舉例:
1.用位移運算符來實現 i * 100
<1>. 100 = 64 + 32 + 4
<2>. 所以 i * 100 可以這樣來表示: ( i << 6 ) + ( i << 5 ) + ( i << 2 )
數學意義:在數字沒有溢出的前提下,對於正數和負數,左移一位相當於乘以2的1次方,左移n位相當於乘以2的n次方。
比如 5 << 2 = 5 * 2的2次方 = 5 * 4
2. >> 右移
數學意義:在數字沒有溢出的前提下,對於正數和負數,右移一位相當於除以2的1次方, 右移n位相當於除以2的n次方。
比如 11 >> 2 = 11 / 2的2次方 = 11 / 4
3. >>> (無符號右移)
int a = 8;
int b = 32;
a >>> b 等價於 a >>> (b%32)
舉例:
1.用位移運算符來實現 i * 100
<1>. 100 = 64 + 32 + 4
<2>. 所以 i * 100 可以這樣來表示: ( i << 6 ) + ( i << 5 ) + ( i << 2 )