Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Системы счисления.doc
Скачиваний:
97
Добавлен:
14.05.2015
Размер:
220.16 Кб
Скачать

4.1. Алгоритмы перевода целых чисел из фсс в десятичную систему и обратно

Как известно, все позиционные системы устроены одинаково и, следовательно, перевод из любой позиционной системы счисления в десятичную осуществляется по одному и тому же алгоритму.

В P-ичных системах счисления базис является геометрической прогрессией. Вклад в значение числа цифры a, стоящей на k-м месте слева, равен a-Pk, где P — основание системы счисления. Часто говорят, что “вес” k-го разряда равен Pk.

В ФСС “вес” каждого разряда числа также определяется базисом этой системы. Для удобства дальнейшей работы выпишем “веса” первых 10 разрядов ФСС (нумерацию разрядов ведем справа налево, начиная с первого). Такая нумерация разрядов удобна, поскольку в качестве веса k-го разряда используется k-е число Фибоначчи.

10-й разряд

9-й разряд

8-й разряд

7-й разряд

6-й разряд

5-й разряд

4-й разряд

3-й разряд

2-й разряд

1-й разряд

89

55

34

21

13

8

5

3

2

1

Пример 1. Пусть нам дано число Afib = 10101010 записанное в фсс. Чему равно это число в десятичной системе счисления?

Чтобы ответить на этот вопрос, запишем цифры числа в разрядную сетку, затем умножим каждую цифру на вес разряда и сложим полученные числа. Так как цифрами фибоначчиевой системы счисления являются 0 и 1, то нам достаточно сложить веса тех разрядов, где стоят единицы.

8-й разряд

7-й разряд

6-й разряд

5-й разряд

4-й разряд

3-й разряд

2-й разряд

1-й разряд

34

21

13

8

5

3

2

1

1

0

1

0

1

0

1

0

Получим: Afib = 10101010fib = 34 + 13 + 5 + 2 = 5410.

Алгоритм перевода целых чисел из фибоначчиевой системы счисления в десятичную

  1. Напишем над каждой цифрой в фибоначчиевой записи числа, начиная с младшей цифры, вес соответствующего разряда.

  2. Сложим все числа, стоящие над единицами. Полученное число будет десятичным эквивалентом фибоначчиева числа.

Пример 2. Решим обратную задачу. Запишем в фибоначчиевой системе счисления десятичные числа 1010, 2510 и 10010.

Для решения нашей задачи достаточно подобрать такие числа Фибоначчи, сумма которых равна исходному десятичному числу. Например, число 10 можно представить суммой следующих чисел Фибоначчи: 1010 = 5 + 3 + 2. Это позволяет записать нам 1010 в виде 1110 (выполнили разложение по базису).

Однако это же число 1010 можно записать в фибоначчиевой системе счисления и по-другому:

1010 = 10010fib = 1*8 + 0*5 + 0*3 + 1*2 + 0*1.

Аналогично, число 2510 можно также записать несколькими способами:

2510 = 1000101fib = 110101fib.

Число 10010 можно записать как минимум шестью способами:

10010 = 1000010011fib = 1000010100fib = 110010011fib = 110010100fib = 101110011fib = 101110100fib.