I'm somewhat familiar with the typedef enum syntax of C and C++.  I'm now programming in Objective-C and came across the syntax in the following example.  I'm not sure if the syntax is Objective-C specific or not.  But, my question is in the following code snippet, what does syntax like 1 << 0 mean?
typedef enum {
   CMAttitudeReferenceFrameXArbitraryZVertical = 1 << 0,
   CMAttitudeReferenceFrameXArbitraryCorrectedZVertical = 1 << 1,
   CMAttitudeReferenceFrameXMagneticNorthZVertical = 1 << 2,
   CMAttitudeReferenceFrameXTrueNorthZVertical = 1 << 3
} CMAttitudeReferenceFrame;
 
     
     
    