2014-09-02 90 views
-2
var x = 2; 
var y=x+2<<2; 
Console.WriteLine(y); 
output = 16 

我的疑問是,16是如何來的。我知道按位左移操作符。什麼樣的操作完成。C#.net按位左移操作。

+0

這一點,你掙扎?其基本上(2 + 2)* 4 – Sayse 2014-09-02 09:17:51

回答

2

注意運營商的優先級。 2 + 2 << 2不是2 + (2 << 2)

1

其下同 -

x + 2 = 4; 

4 << 2 ////it means 16 if you perform bitwise on this. 

應將描述來了解讓換檔操作: -

位移位到左側。運營商左側的號碼是 將號碼指定的地點數量向右移。 向左移動的次數會使數字加倍,因此每個左移 會將原始數字乘以2.左移使用快速 乘法或將一組數字打包在一起放入一個較大的 數字。左移僅適用於整數或數字, 自動轉換爲整數,如字節和字符。

所以你的情況可以說呈現4是100,它會通過2偏移,從而成爲10000這是16演示: -

for 4 :- 100 
left shift by 2 so, 
10000 ////Which is 16