左移运算符“<<”。其功能把“<< ”左边的运算数的各二进位全部左移若干位,高位丢弃,低位补0。
右移运算符“>>”。对于有符号数,在右移时,符号位将随同移动。当为正数时, 最高位补0;而为负数时,符号位为1,最高位是补0 或是补1 取决于编译系统的规定。Turbo C 和很多系统规定为补1。
0x01<<2+3;
结果为32?别惊讶,32 才是正确答案。因为“+”号的优先级比移位运算符的优先级高
0x01<<2+30;
0x01<<2-3;
这样行吗?不行。。左移和右移的位数不能大于数据的长度,不能小于0。
>>>摘至《C语言深度解剖》2.5位运算符