【转】C++中移位运算

来源:互联网 发布:青岛php招聘 编辑:程序博客网 时间:2024/06/06 19:23

移位运算

1.移位运算是在二进制基础上对数字进行位移,按照平移方向可以分为两种,左移<<和右移>>,。在移位运算中,byte,short,char型在移位运算中会变成int型。规定移动的次数为移动次数与32位的余数,例如33次和1次是等价的。

long型规定移动次数是移动次数对64取余。

2.无论是有符号运算还是无符号运算,左移时都是高位舍弃,地位补0.

3.但对右移时,无符号数补0,有符号数补补符号位,即正数补0,负数补1.

4.程序举例: 

      

5.分析

   为什么number变成了FFFFFFFE了?

   char型在移位中变成int型,为4个字节,32位。

   移位过程如下:01111110 ->0000 0000 0000 0000 0000 0000 0111 1110 ->1111 1100 0000 0000 0000 0000

   0000 0000(注明:左移25位时加上原来8位,则最高位0溢出,故舍去)->1111 1111 1111 1111 1111 1111 1111

   1111 1110 ->FFFFFFFE

    


0 0
原创粉丝点击