Хех, разобрал алгоритм на бумажке, ошибка заключалась в этом:
function toBIN( num ) {
var out = "", bit = 1;
*!*
while( num >= bit ) { // >=
*/!*
out = ( num & bit ? 1 : 0 ) + out;
bit <<= 1;
}
return out || "0";
}
alert( toBIN(4) );
function toDEC( dec ) {
var out = 0, len = dec.length, bit = 1;
while( len-- ) {
out += dec[ len ] == "1" ? bit : 0;
bit <<= 1;
}
return out;
}
alert( toDEC( '0100' ) );
Когда bit == 4, условие не выполнялось, и выводило тот результат, который был уже, а это: 00