Что такое 1 << 0?

 enum
    {
      kFlag_FPS         = 1 << 0,
      kFlag_Help        = 1 << 1,
      kFlag_RedBlue3D   = 1 << 2,
    }

Я пытаюсь понять, что этот код я не знаю, что:

1 << 0

означает?

Любая помощь очень ценится!

Ответы

Ответ 1

От MSDN - Операторы сдвига: → и < <

Оператор с левым сдвигом приводит к тому, что бит-бит в первом операнде сдвигаться влево на количество бит, заданных вторым операнд. Биты, освобожденные операцией сдвига, заполняются нулями. Это логический сдвиг вместо операции сдвига и поворота.

Это означает, что пользователь берет значение бит 1 и сдвигает биты влево на основе правильного номера.

Это означает, что в этом случае их значения будут выглядеть так в двоичном формате.

1 << 0 = `0000 0001`
1 << 1 = `0000 0010`
1 << 2 = `0000 0100`

Первая смена не нужна, но она выглядит более согласованной с остальными.

Ответ 2

1 << 0 1 сдвинут влево на 0 позиций, что равно 1.

Ответ 3

Оператор << - бит-сдвиг. Итак, 1 << 2, равно 4, когда вы берете 1 и сдвигаете на бит 2. При использовании 1 << 0 это не влияет на значение и, вероятно, там, чтобы все выглядело согласованным.

Ответ 4

x << y - означает сдвиговые бит x влево (до большего значения) y раз. В математике это выглядит так: x * (2^y) или x * pow(2, y)

Ответ 5

Это могло быть просто

enum
    {
      kFlag_FPS         = 1,
      kFlag_Help        = 1 << 1,
      kFlag_RedBlue3D   = 1 << 2,
    }

но кодеру нравится больше симметрии.