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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 倪鹏博 中级黑马   /  2012-8-20 00:02  /  2363 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 倪鹏博 于 2012-8-20 00:04 编辑

无符号右移>>>求出byte类型最大正数值?做出来的结果老不对,明显大了很多,求高手帮忙啊!!!
绞尽脑汁没做出来,问题还多了:发现-1>>-1之后=1? 为什么可以右移-1位?这一步怎么个过程啊?我的常识啊!求解答

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

3 个回复

正序浏览
public class num {
        public static void main(String[] args){
                int n = Integer.MAX_VALUE;
                n=n>>>24;
                System.out.print(n);
        }
}
回复 使用道具 举报
本帖最后由 应广驰 于 2012-8-20 03:33 编辑

当右移的运算数是byte 和short类型时,将自动把这些类型扩大为 int 型 ,所以对于比int还要小的数值类型(short、byte)不应当进行无符号右移运算。
至于-1>>-1是应该是等于-1的,java中整形 右移运算右边操作数 超过32的,就移动模32取得的余数,如果右边操作数是负数,就用32减去该操作数绝对值模32取得的余数,获得的正数即操作数。
后面的那个问题,说实话是我以前通过代码试出来的,准确性不敢肯定,不过我试过不少数,得到的都行,在这里,也希望哪位真正知道的兄弟指导一下

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 很给力!

查看全部评分

回复 使用道具 举报
这个没研究过,关注中
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马