"Перевод числа из одной системы счисления в другую"


Страницы: 1
Пользователь: slivka
Сообщений: 4
Статус: Незримый
Зарегистрирован:
27 ноября 2008, 4:56
Был:30 ноября 2008, 18:02
slivka
smsup
Дата: 27 ноября 2008, 5:19 Сообщение № 1
Как перевести число из одной системы счисления в другую, используя рекурсию
Пользователь: slivka
Сообщений: 4
Статус: Незримый
Зарегистрирован:
27 ноября 2008, 4:56
Был:30 ноября 2008, 18:02
slivka
smsup
Дата: 27 ноября 2008, 5:20 Сообщение № 2
РЕКУРСИЕЙ
(defun encode (n base &optional tail)
(if (zerop n)
(format t "~{~C~}"(or tail '(#\0)))
(encode (truncate n base) base
(cons (digit-char (rem n base) base) tail))))

TRUNCATE и REM - вычисляют неполное частное и остаток.
(DIGIT-CHAR n base) - переводит число n, меньшее base, в соответствующую литеру-цифру.
ZEROP - проверяет аргумент на равенство 0.
FORMAT - распечатывает список цифр в красивом виде.

Страницы: 1