2016-05-11 1 views
0

Пользователь с именем ZPiDER ответил на вопрос о создании случайных строк цвета в JS.Что означает «<<» в javascript?

Random color generator in JavaScript

Это код:

"#"+((1<<24)*Math.random()|0).toString(16) 

Я пытаюсь разобрать его, чтобы понять, как это работает, но я действительно не понимаю. Может ли кто-нибудь рассказать, что означает < <?

Я пробовал Google, но я подозреваю, что поисковые системы каким-то образом интерпретируют персонажей.

+0

Google для «операторов JavaScript», почти любой из лучших результатов содержит ответ. – Mifeet

+0

Я не думаю, что это справедливо назвать это дубликатом этого вопроса, потому что я понятия не имел, что это называется в первую очередь. Я искал «<< в javascript» и варианты, и на самом деле не получилось с именем. Кроме того, я думал, что это имеет какое-то отношение к вводу или выводу, как я вижу, он используется в C++. – xerotolerant

+0

Я думаю, дело в том, что этот вопрос не полезен для других, поскольку этот вид оператора уже несколько раз объяснялся на SO. Плюс люди не смогут это сделать в любом случае;) – Mifeet

ответ

1

Это оператор левого сдвига так же, как и во многих других языках, таких как C или Java.

1<<24 означает, что 1 левый сдвиг на 24 бит, поэтому вы получаете 0x1000000. Умножая случайное значение (от 0 включительно до 1 эксклюзивного), вы получаете что-то между 0x000000 и 0xFFFFFF. Это именно то, что вы хотите сделать для случайного цвета.

Но имейте в виду, что автор этого кода не считает, что эта случайная функция не порождает равномерно распределенные случайные значения. Поэтому вполне вероятно, что вы не получите «реального» случайного цвета, а что-то очень близкое ему.

0

< < или >> бит бит, бит сдвиг. Это принимает два аргумента, например x < < y. Это x: 1 1 0 0 0 1 1 1. Позволяет перенести его на 3 байта направо: 1 1 1 1 1 0 0 0

1

Это немного сдвиг: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators

Номер 1 (2^0) в настоящее время сдвигаются влево 24 бита, чтобы стать 16777216 (2^24). Из документации:

< < (сдвиг влево)

Этот оператор сдвигает первый операнд на заданное число бит влево. Избытые биты, сдвинутые влево, отбрасываются. Нулевые биты сдвигаются справа.

Например, 9 < < 2 дает 36:

 Смежные вопросы

  • Нет связанных вопросов^_^