REM Определение расстояния между двоичными кодами
DECLARE FUNCTION NumToBin$ (N&)
DECLARE FUNCTION SumBits! (N&)
CLS
INPUT "Введи первое число :", N1&
INPUT "Введи второе число :", N2&
PRINT "Двоичное представление этих чисел :"
PRINT NumToBin$(N1&): ' Двоичное разложение N1
PRINT NumToBin$(N2&): ' Двоичное разложение N2
PRINT "Расстояние между этими кодами = "; SumBits(N1& XOR N2&)
END
FUNCTION NumToBin$ (N&)
REM Формирование в строке двоичного представления числа N
a$ = "": K = &H1
IF N& = 0 THEN NumToBin$ = "0": EXIT FUNCTION
FOR J = 0 TO 30
IF N& AND K THEN s$ = "1" + s$ ELSE s$ = "0" + s$
K = K * 2: ' Сдвиг шкалы на 1 разряд влево
NEXT J
IF N& < 0 THEN s$ = "1" + s$: ' Учет единицы в знаковом разряде
NumToBin$ = s$
END FUNCTION
FUNCTION SumBits (N&)
REM Подсчет количества единиц в двоичном числе
J& = &H40000000
RESULT = 0
IF N& < 0 THEN RESULT = 1
FOR K = 31 TO 1 STEP -1
IF N& AND J& THEN RESULT = RESULT + 1
J& = J& / 2
NEXT K
SumBits = RESULT
END FUNCTION