type = 1 << 0是什么意思?

Cal*_*ios 7 c objective-c

大家.在最近学习OC时,我总是遇到这样的枚举.

enum {
    type1  = 0,
    type2  = 1 << 0,
    type3  = 1 << 1,
};
Run Code Online (Sandbox Code Playgroud)

type = 1 << 0是什么意思?它通常用于什么?谢谢你.

Han*_*nky 7

按位左移运算符

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

资源

还阅读这篇着名的文章,了解它的作用和方式


SiM*_*Met 5

<<是二元运算符

1 << 0 = 1
1 << 1 = 2
1 << 2 = 4
Run Code Online (Sandbox Code Playgroud)


Sta*_*tas 5

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

enum {
    type1  = 1,
    type2  = 1 << 1,
    type3  = 1 << 2,
};
Run Code Online (Sandbox Code Playgroud)

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