A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄兴旺 金牌黑马   /  2013-8-4 15:47  /  1696 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-8-5 18:46 编辑

6>>2 = 1(这个我知道怎么来的)
-6>>2 = -2(这个是怎么来的)。
谢谢

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3

查看全部评分

6 个回复

倒序浏览
这个不就是二进制的事嘛,
-6的二进制:1111 1111 1111 1010
右移两位:1111 1111 1111 1110
就是-2来的

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
负数在电脑中是以补码形式存储的,移位运算也是在补码的的基础上进行的。首先说一下如何求得一个负数的补码,讲一个负数对应的正数的二进制形式写出,然后将每一位对应取反(包含符号位在内),得到的结果末位加一,就得到负数的补码,
如-6对应的正数为6,6对应的二进制是0000 0110,
各位对应取反(包含符号位在内)结果为1111 1001,
末位加1后为1111 1010,这个即是-6的补码,
然后右移2位,高位空位填补符号位1,所得结果为:1111 1110 这个数就是-2的补码。
想验证是否是-2的补码,可以用上述求负数补码的方式求得所对应的正数,即可知道结果是否是-2.
将1111 1110 各位对应取反得 0000 0001,末位加1得0000 0010,这个是2,是-2对应的正数,所以-6>>2得到的结果为-2.
希望帮到楼主!{:soso_e100:}

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
上面几位都说的很对,我给楼主画图,帮助更好理解

评分

参与人数 1技术分 +2 收起 理由
杨兴庭 + 2 赞一个!

查看全部评分

回复 使用道具 举报
xuaner0719 发表于 2013-8-4 22:26
上面几位都说的很对,我给楼主画图,帮助更好理解

呵呵  谢谢
回复 使用道具 举报
夜空闪亮 发表于 2013-8-4 21:23
负数在电脑中是以补码形式存储的,移位运算也是在补码的的基础上进行的。首先说一下如何求得一个负数的补码 ...

谢谢  讲的好清楚
回复 使用道具 举报
EYE_SEE_YOU 发表于 2013-8-4 20:10
这个不就是二进制的事嘛,
-6的二进制:1111 1111 1111 1010
右移两位:1111 1111 1111 1110

呵呵  谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马