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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蔡陶军 中级黑马   /  2013-4-4 12:47  /  1927 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 蔡陶军 于 2013-4-4 13:33 编辑

-3>>2  为什么等于-1啊
1000-0000  0000-0000  0000-0000  0000-0011   -3原码
1111-1111  1111-1111  1111-1111  1111-1100   -3反码
1111-1111  1111-1111  1111-1111  1111-1101   -3补码

111111-1111  1111-1111  1111-1111  1111-1101   -3>>2的补码

111111-1111  1111-1111  1111-1111  1111-1100   -3>>2的反码

100000-0000  0000-0000  0000-0000  0000-0011   -3>>2的原码  

我搞出来怎么还是-3啊    :Q  苦逼啊 今天进行复习时候 竟然补知道怎么来的

10 个回复

倒序浏览
负数的原码是 减一取反
回复 使用道具 举报
没错啊
1111-1111  1111-1111  1111-1111  1111-1100是-3  右移两位
111111-1111  1111-1111  1111-1111  1111-11是-1啊
负数的二进制就是正数的二进制取反在加一   1不就是一堆零加1吗 取反不就是一堆1加一个0吗在加1不就是全是1了吗
回复 使用道具 举报
没有明白中....
回复 使用道具 举报
冯海霞 发表于 2013-4-4 13:00
负数的原码是 减一取反

111111-1111  1111-1111  1111-1111  1111-1101   -3>>2的补码

111111-1111  1111-1111  1111-1111  1111-1100   -3>>2的反码

100000-0000  0000-0000  0000-0000  0000-0011   -3>>2的原码  

这里难道不是如你所说 二进制减一,然后再进行取反吗(最高位补取反)
回复 使用道具 举报
邵震 发表于 2013-4-4 13:01
没错啊
1111-1111  1111-1111  1111-1111  1111-1100是-3  右移两位
111111-1111  1111-1111  1111-1111   ...

负数的二进制就是正数的二进制取反在加一  ?
哥别误导我吧

应该是负数的补码是该负数的绝对值的二进制然后取反加1才对吧
回复 使用道具 举报
负数的二进制码是对应正数的二进制码减一取反
回复 使用道具 举报
额 我说的正数就是绝对值的意思

你说的补码 反码什么的是啥意思不知道

不过你问的不就是-3>>2为什么是-1吗

好多年不用数学名词了 都还给老师了
回复 使用道具 举报
我终于明白了  原来是右位移过程中,会舍去移动过去的数
111111-1111  1111-1111  1111-1111  1111-1101   -3>>2的补码
111111-1111  1111-1111  1111-1111  1111-11      这里就舍去了上面最后的01
111111-1111  1111-1111  1111-1111  1111-10
100000-0000  0000-0000  0000-0000  0000-01
回复 使用道具 举报
0000--0000 0000--0000 0000--0000 0000--0011=3
1111--1111 1111--1111 1111--1111 1111--1100  3取反
0000--0000 0000--0000 0000--0000 0000--0001=1 相加
--------------------------------------------------
1111--1111 1111--1111 1111--1111 1111--1101|=-3
>>2
1111--1111 1111--1111 1111--1111 1111--1111=-1
先写出正数3的二进制,最后取反+1得到-3,然后再>>2,就得到了想要的结果-1.
回复 使用道具 举报
_王涛 发表于 2013-4-4 13:41
0000--0000 0000--0000 0000--0000 0000--0011=3
1111--1111 1111--1111 1111--1111 1111--1100  3取反
000 ...

嗯  是这样的 负数右移 最高位用1填补,而移出去的位将舍去也就是01被舍去了

点评

恩是的,就是这样..  发表于 2013-4-4 14:38
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马