Показать сообщение отдельно
  #12 (permalink)  
Старый 05.03.2018, 05:44
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от j0hnik
в образовательных учреждениях мотивировать умеют (писать какую нибудь ерунду, которая итак уже есть)
Когда задают задания, которые не имеют практической ценности в зависимости, к примеру, от платформы или сферы применения языка, это да. А знание/понимание этого алгоритма, это не ерунда, без знания этого не было бы toString(). Кроме традиционного деления на 2 (кстати если говорить об алгоритме, то для полного представления картины и деления по модулю не должно быть, должна быть проверка), есть еще и метод сравнения уменьшающихся степеней:

var n, m = [], b = '';
if(n = prompt('Number')) {
    if(n > 1) {
        for(var i = k = 0; k < n; i++) {
            k = Math.pow(2, i);
            m.push(k);
        }

        m.pop();

        while(i = m.pop())  b += n >= i ? (n -= i, 1) : 0;
    } else b = n;
    
    alert(b) 
}


В основе то всего, включая и toString(), обычная бинарная логика. А двоичное представление имеет еще и множество форматов, к примеру двоично-десятичный, который используется сплошь и рядом, к примеру в часах. Ну-ка попробуйте перевести десятичное в двоично-десятичное представление используя toString().

Последний раз редактировалось laimas, 05.03.2018 в 06:10.
Ответить с цитированием