本右移(>>)运算
右移运算符为>>。将一个数a向右移动n位记为:a>>n。比如将12向右移动2位如何计算呢?12的二进制为00001100,那么右移动2位为:00000011,即3。
即12>>2为3。
右移动运算分为两种右移,一种为逻辑右移,在移动过程中,左边位用0填充。一种为算术右移,在移动过程中,左边用符号位来填充。
比如对于有符号数:10000011,对于逻辑右移,向右移动3位,那么左边用0填充,变成了:00010000。而对于算术右移,向右移动3位,那么左边用1(1为符号位)填充,变成了11110000。而对于01000011,算术右移3位,那么左边用0(0为符号位)填充,变成了00001000。
在C语言中,右移运算符为算术右移运算符,即左边用符号位来填充。
int main(void)
{
int a = -3;
int b = 10;
int c = a >> 2;
int d = b >>1;
printf(“a>>2=%d, b>>1=%d\n”, c, d);
return
0;
}