在一本书上看到这个例子,有个地方不明白,请教大家。
using System;
class Test
{
public static void Main()
{
int x=16;
Console.WriteLine(x);
int y=x>>2;
Console.WriteLine(y);
y=y>>2;
Console.WriteLine(y);
y=y>>2;
Console.WriteLine(y);
x=-16;
Console.WriteLine(x);
int z=x>>2;
Console.WriteLine(z);
z=z>>2;
Console.WriteLine(z);
z=z>>2;
Console.WriteLine(z);
}
}
输出是:
16
4
1
0
-16
-4
-1
-1
对于最后一个输出是 -1 我好像有点明白,但是又说不出原因,希望大家帮忙~~
using System;
class Test
{
public static void Main()
{
int x=16;
Console.WriteLine(x);
int y=x>>2;
Console.WriteLine(y);
y=y>>2;
Console.WriteLine(y);
y=y>>2;
Console.WriteLine(y);
x=-16;
Console.WriteLine(x);
int z=x>>2;
Console.WriteLine(z);
z=z>>2;
Console.WriteLine(z);
z=z>>2;
Console.WriteLine(z);
}
}
输出是:
16
4
1
0
-16
-4
-1
-1
对于最后一个输出是 -1 我好像有点明白,但是又说不出原因,希望大家帮忙~~
int 32位机好像是4个字节
{
public static void Main()
{
int x=-1;
//转换为二进制输出
Console.WriteLine(Convert.ToString (x,2));
//移位,因为-1的二进制表示已经都是11111111111111了,所以怎么移都是-1
int z=x>>2;
Console.WriteLine(Convert.ToString (x,2));
Console.ReadKey ();
}
}
结果:
11111111111111111111111111111111
11111111111111111111111111111111因为-1的二进制表示已经都是都是1了,所以怎么移都是-1啊