左移运算符<<
双目运算符;
功能:把左移运算符(<<)左边的运算数的各二进制位全部左移若干位,移动的位数由左移运算符右边的数指定,高位舍掉,低位补0
右移运算符>>
双目运算符;
功能:把右移运算符(>>)左边的运算数的各二进制位全部右移若干位,移动的位数由右移运算符右边的数指定;
对于有符号数,在右移时,符号位将随同移动:
当有符号数为正数时,最高位补0
当有符号数为正数时,最高位也就是符号位为1,最高位补0或者补1,取决于编译系统。(很多系统规定为补1)
例题1:
0x01<<2+3;
计算结果:32
原因:'+'运算符的优先级高于<<
例题2:
0x01<<32; //溢出
0x01<<-1;
这两句话都会使编译器报错,
左右移的位数不能大于被移位的数据的长度,也不能小于0