Как я упомянул, преобразовать нужно не
в двоичное число, а
из двоичного. Результат хранится исключительно как строка для вывода на экран.
Сообщение от pax
А что ты получишь делением двоичного числа на 10? Тут как обычно возведение двойки в степень и сложение.
|
Принцип, в кратце (псевдокод):
function toString(number) {
result = ""; // результат
while (number != 0) {
digit = number % 10; // цифра в конце числа
result = chr(ord("0") + digit) + result; // записываем ее в результат
number = number / 10; // переходим к следующей цифре
}
return result;
}
Суть в том что деление\модуль должны будут быть реализованы отдельно.
Сообщение от SBJoker
Классическое: "читаем биты справа налево, преобразуем каждую единицу в число по принципу 2^позиция бита. Прибавляем к итоговому числу. И так по всем битам числа." Не подходит?
Для чисел большой размерности надо прикручивать математику больших чисел на строках.
|
Подходит (и легко реализуется) для числа влезающего в стандартный формат, т.е. 32 бита, или немного больше для double (не могу сказать наверняка разрядность мантисы).
Строковая математика - неплохой вариант, хотя мне кажется что она будет работать по скорости не очень быстро. Думаю это можно немного исправить таблицей констант (2^n), но нужное количество итераций не очень радует.
__________________
Мой сайт-блог. Игры, обновления, примеры для Haxe, JavaScript(+HTML5), GameMaker, Love2d...