8

每个人。最近在学习OC的时候,总是碰到这样的enum。

enum {
    type1  = 0,
    type2  = 1 << 0,
    type3  = 1 << 1,
};

type = 1 << 0 是什么意思?它通常是用来做什么的?谢谢转发。

4

5 回答 5

7

位左移运算符

在 Objective-C 中,按位左移运算符由 '<<' 序列表示,后跟要移位的位数

资源

另请阅读这篇著名的文章以了解它的作用和方式

于 2013-06-07T07:57:58.870 回答
7

<< 是二元运算符

1 << 0 = 1
1 << 1 = 2
1 << 2 = 4
于 2013-06-07T07:58:01.773 回答
4

这是一位移位。如果您需要为某物分配多种类型,则可以使用这种结构。它被称为位掩码。例子:

enum {
    type1  = 1,
    type2  = 1 << 1,
    type3  = 1 << 2,
};

表示type1为二进制00000001,type2为00000010,type3为00000100,以此类推。因此,如果类型掩码为 3 (00000011),则您知道您的对象是 type1 和 type2。

于 2013-06-07T08:03:05.900 回答
4

该运算符是按位移位(不仅在objective-c中)。

您可以为枚举中的每个条目分配一个整数值,因此它与

enum {
    type1  = 0,
    type2  = 1,
    type3  = 2
};

您可以使用移位运算符轻松确保您的枚举条目可以按位添加,例如

int bitmask = type2 | type3 //bitmask = 3
于 2013-06-07T07:58:41.220 回答
0

这个偏移量为零位,即他的缺席。只是为了统一。

于 2013-06-07T08:01:16.537 回答