Программа на common lisp

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

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

Программа на common lisp Прочитать беззнаковое целое число из стандартного потока ввода и в каждом байте числа обнулить нулевой и седьмой биты и сделать единичными третий и четвертый биты. Результат вывести в стандартный поток вывода.
Получиться должно примерно вот так: 65535 (11111111 11111111) 32382 (01111110 01111110)

Решение задачи: «Программа на common lisp»

textual
Листинг программы
(defun fn (word)
  (check-type word (unsigned-byte 16))
  (logior #b0001100000011000 (logand #b0111111001111110 word)))
 
(defun main ()
  (let ((word (the (unsigned-byte 16) (read))))
    (format t "~&~A (~:*~B)~%~A (~:*~B)~%"
            word
            (fn word))))

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

  1. Определяет функцию fn, которая принимает один аргумент word.
  2. Проверяет тип аргумента word с помощью check-type.
  3. Использует logior для побитового ИЛИ аргумента word с фиксированным значением #b0001100000011000.
  4. Использует logand для побитового И первого аргумента word.
  5. Определяет функцию main, которая не принимает аргументов.
  6. Использует let для создания переменной word, которая содержит 16-битное беззнаковое число, считанное с помощью read.
  7. Выводит значение переменной word с помощью format.
  8. Вызывает функцию fn с аргументом word.
  9. Выводит результат вызова функции fn с помощью format.

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


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

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

14   голосов , оценка 3.571 из 5