黑马程序员技术交流社区

标题: 无符号右移求byte类型最大值 [打印本页]

作者: 倪鹏博    时间: 2012-8-20 00:02
标题: 无符号右移求byte类型最大值
本帖最后由 倪鹏博 于 2012-8-20 00:04 编辑

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


作者: 牛杨    时间: 2012-8-20 00:43
这个没研究过,关注中
作者: 广驰    时间: 2012-8-20 01:13
本帖最后由 应广驰 于 2012-8-20 03:33 编辑

当右移的运算数是byte 和short类型时,将自动把这些类型扩大为 int 型 ,所以对于比int还要小的数值类型(short、byte)不应当进行无符号右移运算。
至于-1>>-1是应该是等于-1的,java中整形 右移运算右边操作数 超过32的,就移动模32取得的余数,如果右边操作数是负数,就用32减去该操作数绝对值模32取得的余数,获得的正数即操作数。
后面的那个问题,说实话是我以前通过代码试出来的,准确性不敢肯定,不过我试过不少数,得到的都行,在这里,也希望哪位真正知道的兄弟指导一下
作者: 刘圣伟    时间: 2012-8-20 08:00
public class num {
        public static void main(String[] args){
                int n = Integer.MAX_VALUE;
                n=n>>>24;
                System.out.print(n);
        }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2