首页 > 其他 > 详细

左移与右移

时间:2016-04-20 23:14:47      阅读:190      评论:0      收藏:0      [点我收藏+]

左移

  无论被移动的数是有符号还是无符号,左移一位相当于乘2(在不溢出的情形下)

 

右移

  对于无符号数,右移一位相当于除以2;

  对于有符号数,如果还想获得同样右移除以2的效果,就要考虑算数右移,即符号位始终不变,所有位(包括符号位)都向右移动一位,这样造成的结果就是,整数通过算数右移,最终都会等于0(所有bit都是0),负数通过算数右移,最终都会等于-1(所有bit都是1)。

 

-1算数右移一位还是-1

  -1算数右移一位结果还是-1,即-1 / 2商还是-1而不是0。初看违反直觉,但是这是符合除法的定义的。数论中对于除法定义如下:

        如果a和b都是整数,并且b != 0,那么有且只有唯一的整数对q和r,满足

        a = qb + r, 其中0 <= r < |b|

根据除法定义, -1 / 2,q = -1, r = 0,满足上面的条件

左移与右移

原文:http://www.cnblogs.com/chaoguo1234/p/5414554.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!