Что такое 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,
}
но кодеру нравится больше симметрии.