前辈们关于移位运算。。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace p4_5
{
class Program
{
static void Main(string[] args)
{
MoveBit(16, 1);
MoveBit(16, 3);
MoveBit(16, 5);
MoveBit(16, 7);
}
static void MoveBit(int x,int n)
{
Console.Write("{0}<<{1}={2} ", x, n, x << n);
Console.Write("{0}>>{1}={2}", x, n, x >> n);
Console.Write("{0}<<{1}={2}", -x, n, -x << n);
Console.WriteLine("{0}>>{1}={2}", -x, n, -x >> n);
}
}
}
这个运行结果为什么会出现0和-1呢,我实在想不明白啊。。它是怎么出来的?
------解决方案--------------------下面是个简单的例子
http://www.cnblogs.com/zhongweiv/archive/2011/11/07/Displacement.html
------解决方案--------------------哦忘记说了,除了有符号位,其它位也是补码。这很重要。如果你把二进制补码写出来,再移位(但是符号位不移动),就明白了。
------解决方案--------------------