对左移和右移的理解

左移运算符<< 

双目运算符;

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

右移运算符>>

双目运算符;

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

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

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

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

 例题1:

0x01<<2+3;

计算结果:32

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

例题2:

0x01<<32;             //溢出 

0x01<<-1;               

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

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

发布了34 篇原创文章 · 获赞 19 · 访问量 11万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章