Программа на 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))))
Объяснение кода листинга программы
- Определяет функцию
fn
, которая принимает один аргументword
. - Проверяет тип аргумента
word
с помощьюcheck-type
. - Использует
logior
для побитового ИЛИ аргументаword
с фиксированным значением#b0001100000011000
. - Использует
logand
для побитового И первого аргументаword
. - Определяет функцию
main
, которая не принимает аргументов. - Использует
let
для создания переменнойword
, которая содержит 16-битное беззнаковое число, считанное с помощьюread
. - Выводит значение переменной
word
с помощьюformat
. - Вызывает функцию
fn
с аргументомword
. - Выводит результат вызова функции
fn
с помощьюformat
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д