Сообщение от 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().