Преобразование целых чисел в двоичный формат в JS

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для конвертации целого числа в двоичное представление в JavaScript вы можете воспользоваться методом toString(2):

JS
Скопировать код
let binaryString = (5).toString(2); // "101"

Метод toString(2) преобразовывает целое число в строку с его двоичным представлением. Использование метода просто для положительных целых чисел, но в случае отрицательных и очень больших чисел требуется особое внимание.

Кинга Идем в IT: пошаговый план для смены профессии

Работа с отрицательными целыми числами

JavaScript использует дополнительный код для отрицательных целых чисел. Для преобразования их в двоичный формат предлагается следующий подход:

JS
Скопировать код
function toBinaryString(num) {
  if (num >= 0) {
    return num.toString(2);
  } else {
    return (num >>> 0).toString(2); 
  }
}

let binaryStringNeg = toBinaryString(-5); // "11111111111111111111111111111011"

Данная функция учитывает положительные и отрицательные числа и преобразует их в двоичный код.

Обработка больших чисел

Для работы с огромными числами, либо числами требующими высокой точности, используйте тип BigInt:

JS
Скопировать код
let bigNumber = BigInt("12345678901234567890");
let binaryStringBigInt = bigNumber.toString(2);

Перед преобразованием проверьте, находится ли число в границах безопасного диапазона числовых значений методом Number.isSafeInteger():

JS
Скопировать код
function isSafeToConvert(num) {
  return Number.isSafeInteger(num);
}

Форматирование для легкости чтения

Чтобы обеспечить равномерное представление двоичных значений, используйте метод String.prototype.padStart(), который дополнит число ведущими нулями:

JS
Скопировать код
let binaryStringPadded = (5).toString(2).padStart(8, '0'); // "00000101"

Подобный подход улучшает читабельность данных и упрощает их сравнение.

Особенности побитовых операций

Побитовые операции в JavaScript осуществляются с 32-битными целыми числами, что может вызвать нежелательные эффекты при работе с числами больше 32 бит. Будьте внимательны и проводите детальное тестирование.

Визуализация

Если понимание процесса перевода целых чисел в двоичные вызывает сложности, давайте рассмотрим пример:

Markdown
Скопировать код
Целое: 9 (🔢)
Двоичное: 1001 (🔘🔘🔗🔘)

Детализация процесса преобразования:

Markdown
Скопировать код
🔢 = 9 = 2³(0) + 2²(0) + 2¹(1) + 2⁰(1)
   = 0 + 0 + 2 + 1
🔘🔘🔗🔘 = 1001

Здесь цифры, идущие слева направо, соответствуют степеням двойки:

  • 1-й разряд — 2⁰ (1)
  • 2-й разряд — 2¹ (2)
  • 3-й разряд — 2² (4)
  • 4-й разряд — 2³ (8)

Например, в числе 9 активными являются разряды 2¹ и 2⁰.

Работа со старыми браузерами? Проблема решаема!

Если поддержка старых браузеров является необходимостью, возможно, придется реализовать полифиллы для функций вроде padStart():

JS
Скопировать код
if (!String.prototype.padStart) {
  String.prototype.padStart = function(targetLength, padString) {
    targetLength = targetLength >> 0;
    padString = String(padString || ' ');
    if (this.length > targetLength) {
      return String(this);
    } else {
      targetLength -= this.length;
      if (targetLength > padString.length) {
        padString += padString.repeat(targetLength / padString.length);
      }
      return padString.slice(0, targetLength) + String(this);
    }
  };
}

Глубокое погружение в преобразование чисел

MDN Web Docs — непревзойденный источник информации о преобразовании чисел и побитовых операций. Глубокие знания в этом направлении значительно потом помогут в осуществлении численных преобразований.

Опубликованные ответы и комментарии на форумах могут предложить ценные подходы и альтернативные решения для необычных ситуаций, например, для отображения 64-битных чисел в пределах ограничений JavaScript.

Тестирование — обязательная процедура

При разработке программ всегда стоит тестировать код на различных входных данных, включая:

  • Огромные числа.
  • Отрицательные числа.
  • Числа с плавающей точкой, требующие высокой точности.

Учтите особенности JavaScript в работе с подобными числами, всегда старайтесь предусмотреть возможные проблемы и избегать их.