总的原则,左移符号位不特殊对待,而右移符号位要特殊对待!
把一个二进制数右移N位,规则为:
除符号位外,全部右移N位,
如果数字是一个有符号正数(无符号数),则用0填补最左边的N位
如果数字是一个有符号负数,则用1填补最左边的N位
例子:
0000 0010 >> 1 = 0000 0001
0000 1010 >> 2 = 0000 0010
1000 0010 >> 1 = 1100 0001
1000 1010 >> 3 = 1111 0001
移位效率确实高,左移一位就相当于乘2,右移一位就相当于除以2。但是要特别注意有符号数。。。