左移運算符

左移運算符就是在 二進制的基礎上對數字進行平移。移動long型的數值時,規定實際移動的次數是移動次數和64的餘數,也就是移動66次和移動2次得到的結果相同。在數字沒有溢出的前提下,對於 正數和 負數,左移一位都相當於乘以2的1次方,左移n位就相當於乘以2的n次方。按 二進制形式把所有的數字向右移動對應位數,低位移出(捨棄),高位的空位補零。對於正數來說和帶符號右移相同,對於負數來說不同。 運算符把expression1的所有位向左移expression2指定的位數。

概述

用來將一個數的各二進制位全部左移若干位。例如:

左移運算符左移運算符

將a的二進制數左移2位,右補0。若a=15,即二進制數00001111,左移2位得00111100,即十進制數60(為簡單起見,用8位二進制數表示十進制數15,如果用

16位二進制數表示,結果是一樣的)。

高位左移後溢出,捨棄。

左移一位相當於該數乘以2,左移2位相當於該數乘以2^2=4。上面舉的例子15<< 2=60,即乘了4。但此結論只適用於該數左移時被溢出捨棄的高位中不包含1的情況。

例如,假設以一個位元組(8位)存一個整數,若a為無符號整型變數,則a=64,即二進制數01000000時,左移一位時溢出的是0,而左移2位時,溢出的高位中包含1。

由下表可以看出,若a的值為64,在左移一位後相當於乘2,左移2位後,值等於0。

a的值 a的二進制形式 a<<1 a<<2
64 01000000 10000000 00000000
127 01111111 11111110 11111100

計算方法

左移表達式的位 result = expression1 << expression2

參數 result

任何變數。

expression1

任何表達式。

expression2

任何表達式。

說明:<<運算符把expression1的所有位向左移expression2指定的位數。例如:>

var temp temp = 14 << 2 變數temp的值為 56,因為 14 (即二進制的 00001110)向左移兩位等於 56 (即二進制的 00111000)。

簡單介紹一種方便計算的方法:

8 << 1的值為8*2=16;

8 << 2的值為8*(2^2)=32;

8 << n的值為8*(2^n)。

意義規則

左移運算符就是在 二進制的基礎上對數字進行平移。按照 平移的方向和填充數字的規則分為三種:<<(左移)、>>(帶符號右移)和>>>(無符號右移)。

在 移位運算時,byte、 short和char類型移位後的結果會變成int類型,對於byte、short、char和int進行移位時,規定實際移動的次數是移動次數和32的餘數,也就是移位33次和移位1次得到的結果相同。移動long型的數值時,規定實際移動的次數是移動次數和64的餘數,也就是移動66次和移動2次得到的結果相同。

三種移位運算符的移動規則和使用如下所示:

<<(左移)

運算規則:

按二進制形式把所有的數字向左移動對應的位數,高位移出(捨棄),低位的空位補零。

語法格式:

需要移位的數字 << 移位的次數

例如: 3 << 2,則是將數字3左移2位

計算過程:

3 << 2 首先把3轉換為 二進制數字0000 0011,然後把該數字高位(左側)的兩個零移出,其他的數字都朝左平移2位,最後在低位(右側)的兩個空位補零。則得到的最終結果是0000 1100,則轉換為十進制是12。

數學意義:

在數字沒有溢出的前提下,對於 正數和 負數,左移一位都相當於乘以2的1次方,左移n位就相當於乘以2的n次方。

>>(帶符號右移)

運算規則:

按二進制形式把所有的數字向右移動對應的位數,低位移出(捨棄),高位的空位補符號位,即正數補零,負數補1。

語法格式:

需要移位的數字 >> 移位的次數

例如11 >> 2,則是將數字11右移2位

計算過程:

11的二進制形式為:0000 1011,然後把低位的最後兩個數字移出,因為該數字是正數,所以在高位補零。則得到的最終結果是0000 0010。轉換為十進制是2。

數學意義:

右移一位相當於除2,右移n位相當於除以2的n次方。這裡是取商哈, 餘數就不要了。

>>>(無符號右移)

運算規則:

按 二進制形式把所有的數字向右移動對應位數,低位移出(捨棄),高位的空位補零。對於正數來說和帶符號右移相同,對於負數來說不同。 其他結構和>>相似。

符按位

左移運算符按位方式

result=expression1 << expression2

result

expression1

expression2

任何表達式。 運算符把expression1的所有位向左移expression2指定的位數。例如:var temp

temp = 14 <<2變數temp的值為 56,因為 14 (即二進制的 00001110)向左移兩位等於56(即二進制的 00111000)。

熱門詞條

聯絡我們