var x = 2;
var y=x+2<<2;
Console.WriteLine(y);
output = 16
我怀疑16是怎么来的。我知道按位左移运算符。完成了什么样的操作。
答案 0 :(得分:2)
注意运营商优先权。 2 + 2 << 2
不 2 + (2 << 2)
。
答案 1 :(得分:1)
与以下相同: -
x + 2 = 4;
4 << 2 ////it means 16 if you perform bitwise on this.
了解让换班操作: -
向左移位。运营商左边的数字是 将数字指定的地点数量向右移动。 每次向左移动都会使数字翻倍,因此每次左移 将原始数字乘以2.使用左移快速 乘法或将一组数字组合成一个更大的数字 数。左移只适用于整数或数字 自动转换为byte和char的整数。
所以在你的情况下,我们可以说4的演示文稿是100
,它会被2
移动,所以它变为10000
,这是16
的呈现: -
for 4 :- 100
left shift by 2 so,
10000 ////Which is 16