Функция для перевода из десятичной в двоичную систему?
Подскажите, пожалуйста, что нужно изменить? При замене «num / 2» на «num—» все работает, но естественно мне не нужен остаток от каждого числа, а только от num / 2.
Методом parseInt() пользоваться не хочу, т.к. пишу функцию для практики. Использовать я ее не буду дабы не создавать велосипед.
P.S. Если бы функция работала, то нужно выводить число в обратном порядке, это я знаю как реализовать, в коде не стал указывать.
- Вопрос задан более трёх лет назад
- 1356 просмотров
1 комментарий
Простой 1 комментарий
.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 всегда вызывает при попытке вывести объект на экран.
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
Нужно неизвестное число n перевести в двоичную систему в JS
Строчка с округлением бесполезна, так как результат округления никуда не присваивается.
Вместо этого места, округление (отбрасывание дробной части) нужно было производить в третьей секции for где описывается следующее значение i
i = Math.trunc(i / 2)
В итоге можно получить следующее:
function testCycle(n) < x = ''; for (i = n; i >0; i = Math.trunc(i / 2)) < x = (i % 2) + x; >return x; > console.log(testCycle(7)); console.log(testCycle(12)); console.log(testCycle(22));