将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
例:a = a <<2 将a的二进制位左移2位,右补0,
左移1位后a = a * 2
若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。
右移运算符(>>)
将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。
操作数每右移一位,相当于该数除以2。
例如:a = a >>2 将a的二进制位右移2位,
左补0 or 补1 得看被移数是正还是负。
<<:左移运算,与其对用的有>>(右移)实现过程是把该变量先变成2进制数,然后进行移位,在用0补齐。
例:unsigned char x;
x=127//(二进制:0111 1111)
//x<<1后的结果:1111 1110 <=> 254
printf(''%o",x<<1) //按8进制输出376
说明事项1:移位运算都是2的整数倍,*2 和<<1的运算结果是一样的,但是移位的运行效率要高
2:有符号数不要轻易使用移位,符号位比较容易出问题。