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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李栋 金牌黑马   /  2011-12-2 17:14  /  3614 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李栋 于 2012-12-25 20:56 编辑

请删除        

12 个回复

倒序浏览
原来的左边第一位去掉,第二位补上,再将这新的第一位确定为1,右边补0.

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
武超 发表于 2011-12-2 17:43
原来的左边第一位去掉,第二位补上,再将这新的第一位确定为1,右边补0.

武超同学,我听不懂啊:L
回复 使用道具 举报
我这里也没有说该怎么移动啊,您怎么已经有第几位补什么的答案了呀?{:soso_e132:}
回复 使用道具 举报
本帖最后由 郝亚平 于 2011-12-2 18:20 编辑

代码例子:

class Test{
        public static void main(String args[]){
                System.out.println((-6)>>3);//-1
                System.out.println((6)>>3);//0

                System.out.println((-6)<<3);//-48
                System.out.println((6)<<3);//48
        }
}

分析:
    看前两行输出语句:对于向右移动的情况,无论是正数还是负数,都是高位方向空出位来,高位方向决定了数据的正负,所以,这里,这个补什么,必须要看是正数还是负数,也就是看高位起始位是0还是1,是什么就补什么。总结下:高位方向空位补0还是补1,要看移动前原始数据的高位是0还是1,即正负性。

    看后两行输出语句:对于向左移动的情况,无论是正数还是负数,都是低位方向空出来位来,这个地方不决定数据的正负,所以,都是补充为0.即为:低位方向空位永远补充0.
遵循此原则,应该就不会出错了。












点评

我也把您说的话保存了,这样的回答也是一种思想,谢谢您  发表于 2011-12-2 18:23
哎呀,太详细了,谢谢亚平同学,连正负性都告诉我了,我很惭愧,感谢您这样详细的回答和帮助  发表于 2011-12-2 18:22

评分

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

查看全部评分

回复 使用道具 举报
郝亚平 发表于 2011-12-2 18:18
代码例子:

class Test{

呵呵。不客气。加油努力。一起进步~。:handshake
回复 使用道具 举报
武超 黑马帝 2011-12-2 20:42:19
7#
李栋 发表于 2011-12-2 17:52
我这里也没有说该怎么移动啊,您怎么已经有第几位补什么的答案了呀? ...

你不是说负数向左移动么

点评

对,是啊,可是看不懂您的解答  发表于 2011-12-2 21:08
回复 使用道具 举报
如果原码的话, 符号位不变  移动位补0 如10010->10001
回复 使用道具 举报
付旭 黑马帝 2011-12-14 16:42:38
9#
  什么是高位和地位呢?   亚平哥
回复 使用道具 举报
许邦存 来自手机 黑马帝 2011-12-14 17:56:05
10#
左移的话不管是否是正负数,都在后面补零,右移根据是正数则补0,为负数则补1
回复 使用道具 举报
许邦存 来自手机 黑马帝 2011-12-14 17:58:15
11#
右移动是在高位补1或0,就最右边。
回复 使用道具 举报
郝亚平 黑马帝 2011-12-14 18:48:47
12#
付旭 发表于 2011-12-14 16:42
什么是高位和地位呢?   亚平哥

没思考过,这个差不多就是个习惯称谓。描述二进制数据和十六进制数据经常用到啦。
不管是看待二进制,还是十六进制,左边相对于右边都是高位,右边相对于左边都是低位。

客气。:P
回复 使用道具 举报
付旭 黑马帝 2011-12-14 19:30:25
13#
郝亚平 发表于 2011-12-14 18:48
没思考过,这个差不多就是个习惯称谓。描述二进制数据和十六进制数据经常用到啦。
不管是看待二进制,还 ...

      ok   明白....  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马