ПРЕОБРАЗОВАНИЕ ЧИСЕЛ_
BIN$(), НЕХ$(), DEC()
Spectrum-Бейсик располагает только одной
функцией преобразования чисел из одной системы счисления в другую
— BIN, переводящей двоичные числа в десятичные. Beta Basic
добавляет еще три: BIN$, НЕХ$ и DEC.
Функция
BIN$(< число >)
выполняет действие, обратное функции BIN
— переводит числа в интервале 0...65535 из десятичного в двоичное
представление. Результат возвращается в виде символьной строки длиной 8
символов для чисел в интервале 0...255 и 16 символов — для
остальных чисел из допустимого диапазона. Наглядно работу функции
представляет следующий пример:
DO: PRINT AT 0,0; BJN$(IN 65022): LOOP
Порт 65022 обслуживает клавиатуру, точнее,
клавиши A, S, D, F и G (подробнее см. в [1]). Если эти клавиши не
нажимать, то на экране будет представлено число ххх 11111 (5, 6 и 7-й
биты предназначены для других целей и могут принимать произвольное
значение). Нажатие перечисленных клавиш приведет к появлению нулей в
соответствующих позициях числа. Так, удерживаемые одновременно клавиши
А и G дадут такой результат: xxxOl 1 1 0.
С помощью функции BIN$ удобно просматривать
область символов, определяемых пользователем, область атрибутов,
системные переменные и т. п. Для получения в результирующей строке
символов, отличных от 0 или 1 (например, пробела и черного квадрата из
набора псевдографических символов ZX Spectrum), необходимо выполнить
РОКЕ 62869, "Ссимвол, заменяющий ноль>":
РОКЕ 62865,"<символ, заменяющий единицу>"
Функция НЕХ$(<число>)
переводит десятичное целое число (например,
адрес ячейки памяти) в шестнадцатеричный вид. Результат возвращается в
виде двухсимвольной строки для чисел от -255 до 255 и
четырех-символьной — для всех больших из диапазона -65535...65535.
Операцию обратного преобразования выполняет функция
DEC (< строка символов >)
Она переводит числа из шестнадцатеричного
представления в десятичное. Аргумент функции должен быть двух- или
четырех-символьной строкой, представляющей собой шестнадцатеричное
число (шестнадцатеричные цифры A...F могут быть как строчные, так и
прописные). Например, в результате выполнения оператора PRINT
DEC("9C40") на экран будет выведено число 40000.