MeasureSpec中的按位运算符、移位运算符讲解(左位移、与、求反)

我们先看下基础知识

《MeasureSpec中的按位运算符、移位运算符讲解(左位移、与、求反)》

《MeasureSpec中的按位运算符、移位运算符讲解(左位移、与、求反)》

好了,下面看MeasureSpec中的按位运算、移位运算:

android经常会有类似如图,(0的二进制数为00)00左移30位,达到的目的就是去形成一个32位的值

《MeasureSpec中的按位运算符、移位运算符讲解(左位移、与、求反)》 1

将图2可以用图3解释

《MeasureSpec中的按位运算符、移位运算符讲解(左位移、与、求反)》 2

《MeasureSpec中的按位运算符、移位运算符讲解(左位移、与、求反)》 3

《MeasureSpec中的按位运算符、移位运算符讲解(左位移、与、求反)》

~  这个符号是求反,0变1,1变0,~MODE_MASK=11111111,11111111,11111111,11111111

《MeasureSpec中的按位运算符、移位运算符讲解(左位移、与、求反)》

& 这个符号为与运算,两个二进制值完全一样才会得1,不同则为0

《MeasureSpec中的按位运算符、移位运算符讲解(左位移、与、求反)》

或运算如下图

《MeasureSpec中的按位运算符、移位运算符讲解(左位移、与、求反)》

打包的规则是:将左边size转换为32位,将右边mode转换为32位,然后进行或运算。前两位作为mode,后30位作为size

《MeasureSpec中的按位运算符、移位运算符讲解(左位移、与、求反)》

    原文作者:紫苑草
    原文地址: https://www.jianshu.com/p/64791e544221
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞