title: Why use the Bitwise-Shift operator for values in a C enum definition?
body: <p>Apple sometimes uses the Bitwise-Shift operator in their <strong>enum</strong> definitions. For example, in the <strong>CGDirectDisplay.h</strong> file which is part of Core Graphics:</p>
  
  <pre><code>enum {
    kCGDisplayBeginConfigurationFlag  = (1 &lt;&lt; 0),
    kCGDisplayMovedFlag           = (1 &lt;&lt; 1),
    kCGDisplaySetMainFlag         = (1 &lt;&lt; 2),
    kCGDisplaySetModeFlag         = (1 &lt;&lt; 3),
    kCGDisplayAddFlag         = (1 &lt;&lt; 4),
    kCGDisplayRemoveFlag          = (1 &lt;&lt; 5),
    kCGDisplayEnabledFlag         = (1 &lt;&lt; 8),
    kCGDisplayDisabledFlag        = (1 &lt;&lt; 9),
    kCGDisplayMirrorFlag          = (1 &lt;&lt; 10),
    kCGDisplayUnMirrorFlag        = (1 &lt;&lt; 11),
    kCGDisplayDesktopShapeChangedFlag = (1 &lt;&lt; 12)
  };
  typedef uint32_t CGDisplayChangeSummaryFlags;
  </code></pre>
  
  <p>Why not simply use incrementing <strong>int</strong>'s like in a "normal" <strong>enum</strong>?</p>