Я знаю, что 0x
это префикс для шестнадцатеричных чисел в Javascript. Например, 0xFF
это число 255.
Есть ли что-то подобное для двоичных чисел? Я ожидал 0b1111
представить число 15
, но это не работает для меня.
javascript
Миша Морошко
источник
источник
0b0111_0_1_0_1
,Ответы:
Обновить:
В новых версиях JavaScript, в частности в ECMAScript 6, добавлена поддержка двоичных (префикс
0b
), восьмеричных (префикс0o
) и шестнадцатеричных (префикс0x
:) числовых литералов:Эта функция уже доступна в Firefox и Chrome. В настоящее время он не поддерживается в IE, но, видимо, будет, когда появится Spartan.
(Спасибо комментарию точки с запятой и ответу за указание на это.)
Оригинальный ответ:
Нет, для двоичных чисел нет эквивалента. JavaScript поддерживает только числовые литералы в десятичном (без префикса), шестнадцатеричном (префикс
0x
) и восьмеричном (префикс0
) форматах.Одна из возможных альтернатив - передать
parseInt
методу двоичную строку вместе с основанием системы счисления:источник
0b
поддержка на нескольких языках .int type
ниinteger type
, поэтому все целые числа хранятся как числа с плавающей запятой.В ECMASCript 6 это будет поддерживаться как часть языка, т
0b1111 === 15
. Е. Верно. Вы также можете использовать верхний регистр B (например0B1111
).Ищите
NumericLiterals
в спецификации ES6 .источник
Я знаю, что люди говорят, что расширение прототипов - плохая идея, но это был ваш сценарий ...
Я так делаю:
источник
ParseInt("101", 2)
может быть реальный ответ!Если ваша основная задача - отображение, а не кодирование, вы можете использовать встроенную систему преобразования:
Ссылка: Справочник по номерам JavaScript
источник
Насколько мне известно, в Javascript невозможно использовать двоичный указатель. У меня есть три решения для вас, у каждого из которых есть свои проблемы. Я думаю, что альтернатива 3 является наиболее "привлекательной" с точки зрения удобочитаемости, и, возможно, она намного быстрее, чем остальные, за исключением начальной стоимости времени выполнения. Проблема в том, что он поддерживает только значения до 255.
Альтернатива 1:
"00001111".b()
Альтернатива 2:
b("00001111")
Альтернатива 3:
b00001111
Эта версия позволяет вводить 8-значные двоичные
b00000000
, 4-значныеb0000
и переменные цифрыb0
. Этоb01
незаконно, вы должны использоватьb0001
илиb1
.источник
Может быть, это пригодится:
источник
bin
присваивается номер, который выглядит как двоичный, но на самом деле анализируется по основанию 10.parseInt
Функция ожидает строку в качестве первого аргумента, поэтому она превращает ее в "1111" (представление по базе 10), а затем повторно анализирует ее, как если бы это была база 2.Нет, но вы можете использовать parseInt и при желании опустить кавычки.
Единственный недостаток отсутствия кавычек заключается в том, что для очень больших чисел вы быстрее переполнитесь:
источник
Преобразуйте двоичные строки в числа и наоборот.
источник
Я знаю, что это на самом деле не отвечает на заданный вопрос (на который уже ответили несколько раз), как есть, однако я предлагаю вам (или другим, интересующимся этой темой) учитывать тот факт, что наиболее читаемый и обратный / будущий / кроссбраузерный способом было бы просто использовать шестнадцатеричное представление.
Судя по формулировке Q, может показаться, что вы говорите только об использовании двоичных литералов в своем коде, а не об обработке двоичных представлений числовых значений (для которых parstInt - лучший вариант).
Я сомневаюсь, что есть много программистов, которым нужно обрабатывать двоичные числа, которые не знакомы с отображением 0-F в 0000-1111. так что в основном делайте группы по четыре и используйте шестнадцатеричную нотацию.
поэтому вместо записи 101000000010 вы должны использовать 0xA02, который имеет точно такое же значение, гораздо более читабелен и с меньшей вероятностью будет иметь ошибки.
Просто подумайте о читабельности, попробуйте сравнить, что из них больше:
10001000000010010 или 1001000000010010
а что если я напишу их так:
0x11012 или 0x9012
источник
источник