type = 1<<的含义是什么0?

时间:2013-06-07 07:55:02

标签: objective-c c

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

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

type = 1&lt;&lt;&lt; 0?它通常用于什么?谢谢你。

5 个答案:

答案 0 :(得分:7)

按位左移运算符

  

在Objective-C中,按位左移运算符由'&lt;&lt;&lt;序列,后跟要移位的位位数

Source

同时阅读this famous post以了解它的作用以及如何

答案 1 :(得分:5)

&LT;&LT;是二元运算符

1 << 0 = 1
1 << 1 = 2
1 << 2 = 4

答案 2 :(得分:3)

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

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

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

您可以使用shift-operator轻松确保您的枚举条目可以按位添加,如

int bitmask = type2 | type3 //bitmask = 3

答案 3 :(得分:3)

这是一个转变。如果你需要为某些东西分配几种类型,可以使用这种结构。它被称为位掩码。例如:

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

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

答案 4 :(得分:0)

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