枚举中那些牵扯>>0的位移计算,你知道吗?

typedefNS_OPTIONS(NSUInteger, UIRectCorner) {

    UIRectCornerTopLeft    =1<<0,

    UIRectCornerTopRight    =1<<1,

    UIRectCornerBottomLeft  =1<<2,

    UIRectCornerBottomRight =1<<3,

    UIRectCornerAllCorners  = ~0UL

};

拿这个来说吧,我们用枚举的时候,都是UIRectCornerTopLeft或者UIRectCornerTopRigh传进去,但是有的人传一个0或者(和)2就能正确调用,那是因为人家做枚举的时候用了NSUInteger这个,那么1<<0是啥意思呢?

简单说吧,位移不仅仅是这么点,我没呢今天直说枚举中的位移计算

1<<0     :    1是二进制中的1,也就是0001,<<是左移符号,0是左移几个(这不用位,怕混了),

so   : 1<<0 就是 0001 左移0位还是0001 ,也就是当我们要UIRectCornerTopLeft可以传入十进制的1;

1<<1  就是0001左移1位就是0010 ,UIRectCornerTopRight我们就传入十进制的2;

其他的自己玩吧,二进制转十进制的算法自己算:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容