Описать функцию, переводящую целое число из десятичной системы в двоичную - Lisp

Узнай цену своей работы

Формулировка задачи:

Описать функцию, переводящую целое число из десятичной системы в двоичную. Необходимо реализовать функцию при помощи итерационных циклов и рекурсивно.

Решение задачи: «Описать функцию, переводящую целое число из десятичной системы в двоичную»

textual
Листинг программы
(defun dec2bin (n)
 (let ((r 0) (p 1))
   (loop
      (when (zerop n) (return r))
      (setq r (+ r (* (% n 2) p)) p (* p 10) n (\ n 2)))))
 
==> DEC2BIN
 
(dec2bin 13)
 
==> 1101

Объяснение кода листинга программы

В данном коде представлена функция dec2bin, которая принимает в качестве аргумента целое число n и переводит его из десятичной системы в двоичную. В функции используется цикл loop, который выполняется до тех пор, пока n не станет равным нулю. Когда n равно нулю, в цикле выполняется операция возврата значения переменной r, которая и будет результатом работы функции. Внутри цикла выполняются следующие действия:

  1. Переменная r устанавливается равной 0.
  2. Переменная p устанавливается равной 1.
  3. Выполняется операция деления n на 2 и результат сохраняется в переменной p.
  4. Переменная r увеличивается на результат умножения p на результат операции деления n на 2.
  5. Переменная p увеличивается на 10.
  6. Переменная n уменьшается на 2. Таким образом, после выполнения цикла loop, в переменной r будет храниться двоичное представление числа n. Пример использования функции: (dec2bin 13) вернет 1101.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы