Js как перевести число в двоичную систему
Перейти к содержимому

Js как перевести число в двоичную систему

  • автор:

Как работат метод parseint в js?

Функция parseInt() принимает на вход строку и преобразует её в число. На практике данная функция часто используется для преобразования в десятичную систему счисления числа, записанного в другой системе счисления. Для этого функции parseInt() вторым аргументом нужно передать основание системы счисления преобразуемого числа.

Давайте посмотрим на конкретном примере:

// строка с числом в десятичной системе счисления const num10 = '1001'; // в двоичной const num2 = '11111010'; // в шестнадцатеричной const num16 = '0xbb'; // преобразуем строку с числом в число console.log(parseInt(num10, 10)); // => 1001 console.log(typeof parseInt(num10, 10)); // => number // преобразуем число в двоичной системе счисления в десятичную console.log(parseInt(num2, 2)); // => 250 // теперь из шестнадцатеричной в десятичную console.log(parseInt(num16, 16)); // => 187 

Функция для перевода из десятичной в двоичную систему?

Подскажите, пожалуйста, что нужно изменить? При замене «num / 2» на «num—» все работает, но естественно мне не нужен остаток от каждого числа, а только от num / 2.
Методом parseInt() пользоваться не хочу, т.к. пишу функцию для практики. Использовать я ее не буду дабы не создавать велосипед.
P.S. Если бы функция работала, то нужно выводить число в обратном порядке, это я знаю как реализовать, в коде не стал указывать.

  • Вопрос задан более трёх лет назад
  • 1463 просмотра

1 комментарий

Простой 1 комментарий

Js как перевести число в двоичную систему

Нередко возникает необходимость преобразовать одни данные в другие. Некоторые преобразования javascript выполняет автоматически. Например:

const number1 = "56"; const number2 = 4; cont result = number1 + number2; console.log(result); // 564

Здесь константа number1 представляет строку, а точнее строковое представление числа. А константа number2 представляет число. И в итоге мы получим не число 60, а строку 564.

При сложении преобразования в JavaScript производятся по принципу:

  • Если оба операнда представляют числа, то происходит обычное арифметическое сложение
  • Если предыдущее условие не выполняется, то оба операнда преобразуются в строки и производится объединение строк.

Соответственно в примере выше, поскольку первый операнд — строка, то второй операнд — число также преобразуется в строку, и в итоге получаем строку «564», а не число 60. Фактически мы получаем:

const number1 = "56"; const number2 = 4; const result = number1 + String(number2); console.log(result); // 564

Выражение String(number2) позволяет получить строковое представление константы number2, то есть из числа 4 получает строку «4».

Но поведение по умолчанию не всегда может быть желательно. Например, в примере выше мы хотим, чтобы значения складывались не как строки, а как числа. В этом случае мы можем использовать функции преобразования.

parseInt()

Для преобразования строки в целое число применяется функция parseInt() :

const number1 = "56"; const number2 = 4; const result = parseInt(number1) + number2; console.log(result); // 60

При этом строка может иметь смешанное содержимое, например, «123hello», то есть в данном случае есть цифры, но есть и обычные символы. Функция parseInt() все равно попытается выполнить преобразование — она последовательно, начиная с первого символа, считывает цифры, пока не встретит первый нецифровой символ:

const num1 = "123hello"; const num2 = parseInt(num1); console.log(num2); // 123

Стоит учитывать, что преобразуемое значение, которое преобразуется в число, всегда сначала преобразуется в строку. Это может приводить к неожиданным, на первый взгляд, результатам:

const number1 = parseInt(0.000005); // 0; console.log(number1); const number2 = parseInt(0.0000005); // 5 console.log(number2);

Выше в функцию parseInt передаются дробные числа, и мы ожидаем в обоих случаях получить число 0. Однако при преобразовании number2 мы получаем число 5. Почему?

Пример выше будет эквивалентен следующему:

const number1 = parseInt(String(0.000005)); // 0; console.log(number1); const number2 = parseInt(String(0.0000005)); // 5 console.log(number2);

Для дробных чисел меньше 10 -6 (0.000001) применяется экспоненциональная запись, то есть число 0.0000005 представляется как 5e-7 :

console.log(0.0000005); // 5e-7

Далее число 5e-7 преобразуется в строку «5e-7», и эту строку parseInt пытается преобразовать в число. Соответственно на выходе получается число 5.

То же самое касается очень больших чисел типа 999999999999999999999, которые также представляются к экспоненциальной форме.

NaN и isNaN

Если функции parseInt() не удастся выполнить преобразование, то он возвращает значение NaN (Not a Number), которое говорит о том, что строка не представляет число и не может быть преобразована.

console.log(parseInt("abc")); // NaN cont type = typeof NaN; console.log(type); // number

Что интересно, само значение NaN (не число) представляет тип number, то есть число.

С помощью специальной функции isNaN() можно проверить, представляет ли строка число. Если строка не является числом, то функция возвращает true, если это число — то false:

const num1 = "javascript"; const num2 = "22"; let result = isNaN(num1); console.log(result); // true - num1 не является числом result = isNaN(num2); console.log(result); // false - num2 - это число

parseFloat

Для преобразования строк в дробные числа применяется функция parseFloat() , которая работает аналогичным образом:

const number1 = "46.07"; const number2 = "4.98"; let result = parseFloat(number1) + parseFloat(number2); console.log(result); //51.05

Преобразование из строки в число и оператор +

Стоит отметить, что для преобразования строки в число в JavaScript мы можем использовать оператор унарного плюса + перед преобразуемым значением:

const number1 = "56"; const number2 = 4; const result = +number1 - number2; console.log(result); // 52

Здесь выражение +number1 преобразует строку «56» в число 56.

Если надо получить отрицательное представление числа, то аналогичным образом применяется знак унарного минуса (как перед отрицательными числами):

const number1 = "56"; const number2 = 4; const result = -number1 - number2; // -56 - 4 = -60 console.log(result); // -60

Однако в примерах выше строка number1 могла быть преобразована в числа. Если это не возможно, то результатом преобразования будет значение NaN :

const number1 = "56hek"; console.log(+number1); // NaN

.to String ( )

Метод преобразует число в строковое представление в указанной системе счисления.

Время чтения: меньше 5 мин

Открыть/закрыть навигацию по статье

Обновлено 29 мая 2022

Кратко

Скопировать ссылку «Кратко» Скопировано

Метод to String ( ) преобразует число в строку в указанной системе счисления. По умолчанию используется десятичная система счисления.

Пример

Скопировать ссылку «Пример» Скопировано

 const number = 42console.log(number.toString())// '42'console.log(number.toString(2))// '101010'console.log(number.toString(8))// '52'console.log(number.toString(16))// '2a' const number = 42 console.log(number.toString()) // '42' console.log(number.toString(2)) // '101010' console.log(number.toString(8)) // '52' console.log(number.toString(16)) // '2a'      

Как пишется

Скопировать ссылку «Как пишется» Скопировано

Метод принимает необязательный аргумент, указывающий основание системы счисления, в которую нужно конвертировать число при превращении в строку. Допустимые значения аргумента от 2 до 36. Если указать значение вне этого интервала, то произойдёт ошибка Range Error .

Если необязательный аргумент не указан, то строковое представление числа будет в десятичной системе счисления.

Метод возвращает строковое представление числа в запрошенной системе счисления.

Как понять

Скопировать ссылку «Как понять» Скопировано

Метод to String ( ) у числа переопределяет стандартный метод to String ( ) объектов.

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

Помимо стандартной десятичной системы, часто используются:

На практике

Скопировать ссылку «На практике» Скопировано

Николай Лопин советует

Скопировать ссылку «Николай Лопин советует» Скопировано

�� Метод всегда нужно вызывать явно. JavaScript не использует его неявно при печати числа на экран, потому что у примитивных типов существует значение.

Это утверждение прямо противоположно для метода to String ( ) объекта. Его JavaScript всегда вызывает при попытке вывести объект на экран.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *