← Архив: Common Lisp

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

Author: · 23.10.2016 20:11
· original author: lisp123
Прочитать беззнаковое целое число из стандартного потока ввода и в каждом байте числа обнулить нулевой и седьмой биты и сделать единичными третий и четвертый биты. Результат вывести в стандартный поток вывода.

Получиться должно примерно вот так:
65535 (11111111 11111111) 
32382 (01111110 01111110)
· original author: den73
Тебе на cyberforum.ru
· original author: Hedin
Добрый день!
У меня получилось приблизительно так (без форматирования вывода):
<code>
(let ((number (read)))
       (if (and (typep number 'integer) (>= number 0))
           (progn
         (setf (ldb (byte 1 0) number) 0)
         (setf (ldb (byte 1 7) number) 0)
         (setf (ldb (byte 1 3) number) 1)
         (setf (ldb (byte 1 4) number) 1)
         (let ((bits '()))
           (dotimes (position (integer-length number) bits)
             (push (ldb (byte 1 position) number) bits))
           (format t "~A" bits)))
           (format t "Not an unsigned integer")))
</code>
· original author: Hedin
Не доделал немного. Обнулил только в первом байте.