int len = 3;
int a = 2;
int leng = a<<len; //相当于a*2^len
printf("%d", leng); //输出结果是16
int len = 3; //二进制表示为00000011
int leng = len<<1; //左移一位,变成00000110,leng = 6
int len = 3;
int leng = len >> 1; //右移一位,变成00000001,leng = 1
int len = -3; //二进制原码为10000011,补码=反码+1=11111101
int leng = len <<1; //左移一位,变成11111010,再变成补码=反码+1=10000110,leng = -6
int len = -3;
int leng = len >>1; //右移一位,变成11111110,再变成补码=反码+1=10000010,leng = -2
具体参照下文章
http://www.cnblogs.com/myblesh/articles/2431806.html