开发者社区> 问答> 正文

Integer.MAX_VALUE >> 2的问题? 400 报错

Integer.MAX_VALUE >> 2的问题? 400 报错

 @Override  

    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {  

        

int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,  MeasureSpec.AT_MOST);  

        super.onMeasure(widthMeasureSpec, expandSpec);  

    }  

经常遇到这样的写法,一直没搞明白Integer.MAX_VALUE >> 2 就是所谓的尺寸,请求解释下哦,谢谢。

展开
收起
爱吃鱼的程序员 2020-05-30 23:56:57 704 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    不知道哪里不明白?

    就是    >>2  等于  /4 

    至于为什么写移位,可能是为了性能,这个只有作者知道了。 但是个人认为一般来说,这种性能优化应该是编译器的事,写代码不该考虑这些

    ######

    引用来自“dollyn”的评论

    不知道哪里不明白?

    就是    >>2  等于  /4 

    至于为什么写移位,可能是为了性能,这个只有作者知道了。 但是个人认为一般来说,这种性能优化应该是编译器的事,写代码不该考虑这些

    我应该知道了,因为int 是32位,其中最高2位是模式,后30位是尺寸,所以>>2相当于除以4

    最高的整形数据除以4,应该是边界高值。

    ######这种写法在java里,除了能装逼以外,没有任何意义
    2020-05-31 13:04:32
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Show Me The Money! Cost & Reso 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载