- •Двоичная система
- •Двоично-десятичная система
- •Троичная система
- •Фибоначчиева система счисления (фсс)
- •4.1. Алгоритмы перевода целых чисел из фсс в десятичную систему и обратно
- •Алгоритм перевода целых чисел из фибоначчиевой системы счисления в десятичную
- •Алгоритм перевода целых чисел из десятичной системы счисления в фсс
- •Правило приведения фибоначчиевой записи числа к минимальной форме
- •Алгоритм сложения целых чисел в фсс
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.
Алгоритм перевода целых чисел из фибоначчиевой системы счисления в десятичную
-
Напишем над каждой цифрой в фибоначчиевой записи числа, начиная с младшей цифры, вес соответствующего разряда.
-
Сложим все числа, стоящие над единицами. Полученное число будет десятичным эквивалентом фибоначчиева числа.
Пример 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.