2014-09-02 61 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