Определение максимальной группы единиц в двоичном числе
REM Определение максимальной группы единиц в двоичном числе
DECLARE FUNCTION MaxBits! (N&, s$)
CLS
INPUT "Введите целое число : ", M&
k% = MaxBits(M&, a$)
PRINT "Двоичное представление этого числа :"
PRINT a$
PRINT "Максимальное число подряд стоящих единиц = "; k%
END
FUNCTION MaxBits (N&, s$)
REM Перевод числа N в двоичное символьное представление
REM Поиск самой длинной группы единиц (MaxBits = длина)
IF N& = 0 THEN MaxBits = 0: s$ = "0": EXIT FUNCTION
FOR j = 0 TO 31: ' Формирование двоичного числа в строке s$
IF N& AND &H1 THEN
kBits = kBits + 1: ' Подсчет подряд идущих единиц
IF kBits > max THEN max = kBits: ' Запомнили максимум
s$ = "1" + s$: ' Приписали очередную единицу
ELSE
kBits = 0: ' Сброс счетчика при встрече нуля
s$ = "0" + s$: ' Приписали очередной нуль
END IF
N& = N& \ 2: ' Сдвиг на один разряд вправо
NEXT j
MaxBits = max
END FUNCTION