簡體   English   中英

java中的“<<”運算符

[英]“<<” operator in java

Fallowing語句來自java的Character類:

(1 << Character.PARAGRAPH_SEPARATOR)) >> type

PARAGRAPH_SEPARATOR是一個字節, type是一個整數。

這句話的經營者,他們做了什么? 我如何以及在哪里使用這些運營商?

這是oracles java.lang.Character doc。 幾乎所有類中的方法都使用這些運算符。

他們是位移運算符。 <<將位“向左移位”(朝向最高位),反之亦然>> 左移或右移n位與分別乘以或除以2 n幾乎相同。

有關如何在此上下文中使用這些運算符的說明,請參閱@ axtavt的注釋。

這些是按位移位運算符。

如果您左移以下字節:

00000001

你會得到:

00000010

即模式已向左移動,零填充在右側。 因此,如果在該結果上應用右移位運算符>> ,您將再次獲得原始字節。

您會注意到這些數字的十進制值是1和2.如果再次向左移動,您將得到:

00000100 = 4

所以你看到向左移動會將數字乘以2(假設它不會溢出),而右移則除以2。 這在大多數計算機中非常有效。 這就是您如何以實際方式使用這些運算符的一個示例。

它可以作為高度優化的多重比較。 帶符號的左移運算符“<<”將位模式向左移位,帶符號的右移運算符“>>”將位模式向右移位。 位模式由左側操作數給出,位置數由右側操作數移位。 無符號右移運算符“>>>”將零移動到最左側位置,而“>>”之后的最左側位置取決於符號擴展。

更多細節....你可以訪問http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html

<<是左移位運算符:它將存儲在計算機左側的二進制數移位。 例如,二進制中的9 << 2是1001. 9 << 2使二進制(36)中的100100,因為它將其向左移動並在末尾添加0。 1 << nMath.pow(2, n)是一樣的Math.pow(2, n)除了它通常更快更好,以及返回int ,而不是double

>>是正確的轉變。 它向右移動,並丟棄空位。 13是二進制1101,所以13 >> 1是二進制110,或者6是正常的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM