Jak odczytać liczby zapisane silniowo
Przemnażamy cyfrę z n-tego miejsca przez n! · Sumujemy wszystkie iloczyny · W przypadku ułamków dzielimy przez k!, jeżeli liczba znajduje się na k-tym miejscu po przecinku.np.:
43010! = 0*0! + 1*1! + 0*2! + 3*3! + 4*4! = 0 + 1 + 0 + 18 + 96 = 11510
0,00013! = 0 * ( 1/1!)+0*(1/2!) + 0*(1/3!)+1*(1/4!)+3*(1/5!)=1/24 + 1/40=64/960= 1/1510
Można także posłużyć się odmianą schematu Hornera. Na przykład 341010!(((3*5+4)*4+1)*3+0)*2+1)*1+0=463,
ogólniej zaś mamy
(…((n*an+ a(n-1) )*(n-1)+a(n-2) )*…+a2 )*2+a1
Jak przeliczać liczby na system silniowy
Jeżeli chcemy zapisać liczbę niecałkowitą musimy rozbić ją na część całkowitą oraz mantysę (część ułamkową) i zakodować je z osobna.
Postępowanie dla liczby całkowitych:
· Wykonujemy na kodowanej liczbie operację div-mod, z tym że z każdym kolejnym krokiem dzielimy przez następną liczbę naturalną począwszy od jeden.
· Powtarzamy operację, aż do momentu w którym wynik z dzielenia całkowitego jest równy 0.
· Kolejne reszty z dzielenia czytane od dołu utworzą zapis liczby w systemie silniowym.
Postępowanie dla liczby całkowitych:
· Wykonujemy na kodowanej liczbie operację div-mod, z tym że z każdym kolejnym krokiem dzielimy przez następną liczbę naturalną począwszy od jeden.
· Powtarzamy operację, aż do momentu w którym wynik z dzielenia całkowitego jest równy 0.
· Kolejne reszty z dzielenia czytane od dołu utworzą zapis liczby w systemie silniowym.
· Przed liczbą ujemną w zapisie silniowym musimy postawić minus.
Dla przykładu zakodujemy liczby 120 (czyli 5!), 115, 842
120 = 100000!
Dla przykładu zakodujemy liczby 120 (czyli 5!), 115, 842
Dzielna
|
Dzielnik
|
Wynik z dzielenia całkowitego
|
Reszta
|
120
|
1
|
120
|
0
|
120
|
2
|
60
|
0
|
60
|
3
|
20
|
0
|
20
|
4
|
5
|
0
|
5
|
5
|
1
|
0
|
1
|
6
|
0
|
1
|
Dzielna
|
Dzielnik
|
Wynik z dzielenia całkowitego
|
Reszta
|
115
|
1
|
115
|
0
|
115
|
2
|
57
|
1
|
57
|
3
|
19
|
0
|
19
|
4
|
4
|
3
|
3
|
5
|
0
|
4
|
115 = 43010!
Dzielna
|
Dzielnik
|
Wynik z dzielenia całkowitego
|
Reszta
|
842
|
1
|
842
|
0
|
842
|
2
|
421
|
0
|
421
|
3
|
140
|
1
|
140
|
4
|
35
|
0
|
35
|
5
|
7
|
0
|
7
|
6
|
1
|
1
|
1
|
7
|
0
|
1
|
842 = 1100100!
Jako, że wszystkie liczby stojące po przecinku w dowolnym zapisie pozycyjnym dzielimy przez kolejne potęgi podstawy (lub w tym przypadku kolejne silnie), operacją odwrotną będzie mnożenie. Na tym będziemy zatem bazować.
Algorytm zapisu ułamków:
· Zacznij od pomnożenia ułamka który chcesz zapisać przez 1, a potem przez 2.
· Z każdym kolejnym mnożeniem przez kolejną liczbę naturalną określ część całkowitą i mantysę, po czym w następnym kroku pomnóż ostatnią otrzymaną część ułamkową przez kolejną liczbę naturalną.
· Powtarzaj operację, aż kolejna mantysa wyniesie zero.
· Części całkowite czytane od góry do dołu pokażą zapis liczby w systemie pozycyjnym.
Przykład: 0,5
Czynnik
|
Mnożnik
|
Wynik
|
Część całkowita
|
Mantysa
|
0,5
|
1
|
0,5
|
0
|
0,5
|
0,5
|
2
|
1
|
1
|
0
|
0,5=0,01!
Przykład: 1/15
1/15=00013!
Czynnik
|
Mnożnik
|
Wynik
|
Część całkowita
|
Mantysa
|
1/15
|
1
|
1/15
|
0
|
1/15
|
1/15
|
2
|
2/15
|
0
|
2/15
|
2/15
|
3
|
6/15=2/5
|
0
|
2/5
|
2/5
|
4
|
8/5
|
1
|
3/5
|
3/5
|
5
|
3
|
3
|
0
|
1/15=00013!
Za pomocą silniowego systemu pozycyjnego można zapisać także liczby nieskończone i niewymierne. Przykładowo 10.0111111111111111…!