对左移和右移的理解

来源:互联网 发布:软件开发工作量估算 编辑:程序博客网 时间:2024/06/06 00:31

左移运算符<< 

双目运算符;

功能:把左移运算符(<<)左边的运算数的各二进制位全部左移若干位,移动的位数由左移运算符右边的数指定,高位舍掉,低位补0

右移运算符>>

双目运算符;

功能:右移运算符(>>)左边的运算数的各二进制位全部右移若干位,移动的位数由右移运算符右边的数指定;

           对于有符号数,在右移时,符号位将随同移动:

                    当有符号数为正数时,最高位补0

                    当有符号数为正数时,最高位也就是符号位为1,最高位补0或者补1,取决于编译系统。(很多系统规定为补1)

 例题1:

0x01<<2+3;

计算结果:32

原因:'+'运算符的优先级高于<<

例题2:

0x01<<32;             //溢出 

0x01<<-1;               

这两句话都会使编译器报错,

左右移的位数不能大于被移位的数据的长度,也不能小于0

0 0