<  1  2  3  4  5  6  7  8  9  10  11  12

koło zębate

Zanim skonstruowano pierwszy komputer

Przed samym opisem systemu SymP pragnę przedstawić w sposób bardziej dokładny, jakich odkryć dokonano w dziedzinie rozwoju techniki obliczeniowej, zwracając szczególną uwagę na rozwój sztucznej inteligencji od samego początku ich powstania. Zamierzeniem moim jest uniknięcie pozostawienia wrażenia, że opisane nowe rzeczy, kiedyś już były i są tylko wyważaniem drzwi dawno już otwartych.

Spis treści

Wstęp

Do zapoczątkowania rozwoju maszyn liczących potrzebne były takie wynalazki jak koło zębate, które znane już było w starożytnej Grecji w IV wieku p.n.e. oraz dwójkowy system zapisu liczb zwany też binarnym, który stosowany był już w Chinach w 30 wieku p.n.e. oraz w starożytnym Egipcie w 16 wieku p.n.e.

Głównym celem, do którego dążono, było zastąpienie żmudnej i podatnej na pomyłki pracy umysłowej człowieka w zakresie wykonywania operacji arytmetycznych, bardziej doskonałą i niezawodną pracą maszyny.

Skonstruowanie pierwszych sumatorów mechanicznych dało tą pewność, że maszynowe wykonywanie obliczeń jest możliwe i otworzyło drogę do dalszych poszukiwań w tym zakresie.

Skrócona historia komputera

historia komputera
  1. Przekładnia zębata ściśle związana jest z powstaniem koła. W Europie zaczęto ją stosować w IV wieku p.n.e., a w II wieku p.n.e. szeroko już była rozpowszechniona w krajach śródziemnomorskich. Później była istotnym elementem mechanicznych zegarów, arytmometrów i innych urządzeń mechanicznych.

  2. Mechanizm z Antikythery. Koło zębate wykonane z brązu widoczne na największym fragmencie nadzwyczaj skomplikowanego i precyzyjnego na owe czasy urządzenia astronomicznego, zwanego mechanizmem z Antikythery (ang.). Uważa się, że instrument został skonstruowany przez Greków na początku II wieku p.n.e. Był on złożony z 37 kół zębatych z brązu i służył do wyznaczania układu ciał niebieskich. Szczątki tego urządzenia znaleziono na pokładzie wraku antycznego rzymskiego okrętu, który leżał na dnie Morza Egejskiego, w okolicach greckiej wyspy Antikythera (ang.) na zachód od Krety. We wspomnianym fragmencie zachowało się aż 27 kół zębatych. W innych zachowanych fragmentach odnaleziono tylko 3 koła. Z analizy pracy tego urządzenia wynika, że potrzebnych było jeszcze 7 kół, które już nie zachowały się (na podstawie informacji uzyskanych z badań szczątków mechanizmu z Antikythery przez prof. Mike Edmunds i dr Tony Freeth z "University of Cardiff" w Anglii [publikacja w "Nature"]).

  3. Chińskie trygramy (uproszczone binarne heksagramy) będące zapisem liczb w systemie dwójkowym (binarnym). W środku widnieje symbol Ying -Yang. Trygramy pochodzą z okresu panowania starożytnego chińskiego cesarza Fu Xi, który żył 2800 lat p.n.e. Zapis binarny stosowano również w starożytnym Egipcie, o czym świadczą papirusy Ahmesa datowane na lata 1560 - 1542 p.n.e. System ten w Europie został na nowo odkryty dopiero w roku 1679 przez niemieckiego matematyka Gottfrieda Wilhelma Leibniza, choć istnieje też w Europie dokument zapisu binarnego z 1600 r. Jedną z najważniejszych cech tego systemu było to, że dowolną liczbę można było przedstawić w postaci kombinacji cyfr 0 i 1, a dodawanie i mnożenie liczb można było zastąpić bardzo prostym dodawaniem i mnożeniem 0 i 1. Drugą istotną jego cechą jest to, że umożliwia on wykorzystanie, do realizacji tego zapisu, dowolnego zjawiska fizycznego, w którym występują dwa dobrze określone stany. Poprzez przyporządkowanie liczbom liter czy innych symboli istnieje możliwość przetwarzania i przechowywania również danych nienumerycznych.

  4. Replika nie zachowanego do naszych czasów sumatora mechanicznego zaprojektowanego i skonstruowanego w 1623 przez Wilhelma Schickarda na zamówienie astronoma Johannesa (Jana) Keplera. Urządzenie było prostym sześciopozycyjnym sumatorem dziesiętnym złożonym z 6 głównych kół liczących (każde po 10 zębów) realizujących funkcje sumowania cyfr. Między kołami były umieszczone przekładnie pośredniczące, realizujące przeniesienie dziesiętne. Przekładnia pośrednicząca złożona była z koła (z jednym zębem) umieszczonego na jednej osi z kołem liczącym, które po pełnym obrocie przekazywało przeniesienie dziesiętne na inne koło (10 zębów) zazębione z kolejnym kołem liczącym Taka konstrukcja przekładni pośredniczącej zapewniała oprócz realizacji przeniesienia również utrzymanie tego samego kierunku obrotów kół sumujących. Dla zapewnienia dziesięciu stanów stabilnych kół liczących, zastosowano wałeczki dociskane do zębów jednego z kół współpracujących z kołem liczącym przez blaszki sprężynujące. Sumator posiadał sygnalizator przepełnienia. Do wykonywania operacji mnożenia służyły papierowe tabliczki mnożenia (pełny zestaw narysowanych kostek Napiera) naklejone na cylindrach (cylindry Napiera). Każdemu kołu liczącemu był przyporządkowany jeden taki cylinder. Dawało to możliwość doboru (poprzez obrót cylindrów) odpowiedniego zestawu kostek Napiera i zaznaczenia (poprzez zastosowanie maski przesłaniającej) wiersza cyfr potrzebnych do wykonania mnożenia poprzez dodawanie. Cylindry Napiera umieszczone były nad sumatorem (nie zostały to pokazane na rysunku).

  5. Mikroprocesor - centralny element dzisiejszego komputera zajmujący się przetwarzaniem danych. Do realizacji działań arytmetycznych mikroprocesor korzysta z elektronicznego sumatora binarnego.

Kalkulator mechaniczny

kalkulator mechaniczny

Rys. Kalkulator mechaniczny

Mechaniczny kalkulator jest urządzeniem posiadającym następujące elementy:

  • mechaniczny rejestr podajnika obrotów do przechowywania liczby wprowadzonej ręcznie przez użytkownika do kalkulatora. Liczba ta, podczas operacji dodawania, jest zamieniana na obroty kół sumatora. Stosowanie takiego rejestru czyni operację dodawania czynnością dwuetapową. Pierwszym etapem jest wprowadzanie cyfry do kalkulatora, a drugim przesyłanie jej do sumatora. Takie rozwiązanie umożliwia w bardzo prosty sposób (poprzez obroty korbką) wielokrotne powtarzanie ostatniej operacji dodawania. Potrzebne jest to przy wykonywaniu operacji mnożenia, gdzie mnożenie zostaje zastąpione dodawaniem (dodawanie z przesuwaniem rejestru na wyższe pozycje dziesiętne sumatora).

  • sumator dodający dwie liczby, przechowywaną już w sumatorze do liczby pobranej z rejestru

  • mechanizm do realizacji przeniesienia dziesiętnego powstałego w procesie sumowania cyfr na kole liczącym

Przy konstruowaniu sumatora mechanicznego (dziesiętnego) musimy zwrócić uwagę na to, że :

  • liczby w sumatorze są zapisane w układzie dziesiętnym

  • koła liczące posiadają po 10 zębów, które są przyporządkowane cyfrom od 0 do 9

  • dla każdego koła liczącego istnieje 10 stanów stabilnych , inne są przejściowe

  • istnieje mechanizm przeniesienia. Przeniesienie występuje podczas sumowania cyfr na kole liczącym, podczas którego, w czasie jego obrotu, przechodzi ono z pozycji 9 na 0. Musi nastąpić wówczas dodanie jedynki do następnego koła (po lewej stronie)

  • cyfra wprowadzana jest do sumatora poprzez obrót koła o tyle zębów, ile wysoki wartość tej cyfry. Dla cyfry 0 koło pozostawia się w spokoju

  • cyfrę 0 ustawia się na kołach sumatora tylko przy jego zerowaniu.

Koło liczące

Najważniejszym elementem sumatora jest koło liczące (koło zębate z 10 zębami). Zamienia ono operację sumowania cyfr na sumowanie kątów obrotu koła. Jednostkowym obrotem koła jest 36 stopni i stanowi to 0.1 pełnego obrotu koła (360 stopni).

Możliwość reprezentacji liczby np. 847 za pomocą ustawienia kół sumatora, wynika z przedstawienia tej liczby w sposób następujący:

847 = 8 x 100 + 4 x 10 + 7 x 1

Pierwsze koło w sumatorze, licząc od prawej, jest kołem jedności (mnożnik 1). Jest ono ustawione na 7. Drugie koło jest kołem dziesiątek (mnożnik 10). Jest ono ustawione na 4. Trzecie koło jest kołem setek (mnożnik 100). Jest ono ustawione na 8. Pozostałe koła (po lewej) są ustawione na 0. Jak z tego wynika, każde koło liczące sumatora reprezentuje pozycję cyfry w liczbie. Przez obracanie koła w kierunku zgodnym z ruchem wskazówek zegara otrzymujemy dodawanie, przez obracanie w kierunku przeciwnym odejmowanie.

Podczas operacji dodawania, jeśli koło przechodzi z położenia 9 na 0 pojawia się przeniesienie dziesiętne, które musi być dodane w postaci jedynki do następnego lewego koła. Analogicznie jest przy odejmowaniu. Przy zmianie położenia koła z 0 na 9 pojawia się przeniesienie, które należy odjąć od lewego koła.

Wprowadzanie liczby do sumatora

W pierwszych kalkulatorach liczba wprowadzana była do sumatora poprzez ręcznie obracanie kół. Koło obracano o ilość zębów, która odpowiadała wartości cyfry w liczbie. Aby ułatwić wykonywanie tej operacji sumator wyposaży był w dodatkowe koła (zwane kołami nastawczymi). Koło nastawcze było ponumerowane od strony użytkownika od 0 do 9 i było przekręcane do położenia odpowiadającego wprowadzanej cyfrze, a z nim przekręcało się też zazębione z nim (bezpośrednio lub pośrednio) koło liczące. Przy cofaniu koła nastawczego do położenia odpowiadającego cyfrze 0, koło liczące pozostawało w spoczynku. Po każdym wprowadzeniu cyfry do koła liczącego koło nastawcze było zerowane. Prosty mechanizm przeniesienia dziesiętnego takich sumatorów był przystosowany do wprowadzania cyfr, jedna po drugiej. Były to sumatory szeregowe.

Jednak takie bezpośrednie ustawianie sumatora po jednej cyfrze było bardzo niewygodnie. Po pierwsze, nie zapewniało równomiernej i dostatecznej siły napędowej takiego sumatora (siłą napędową było przekręcanie koła nastawczego podczas ustawiania cyfry na sumatorze). Po drugie nie umożliwiało proste i szybkie powtarzanie ostatniej operacji sumowania, co było bardzo ważne podczas operacji mnożenia.

Niedogodność ta spowodowała, że operację wprowadzania liczby do sumatora podzielono na dwa etapy: operację ręcznego wprowadzenia liczby do rejestru kalkulatora i operację automatycznego przesłania jej z rejestru do sumatora, odbywającego się podczas jednokrotnego obrotu korbką mechanizmu automatycznego ustawiania kół sumatora. W ten sposób z wprowadzoną już raz liczbą do kalkulatora można było wykonać wiele rzeczy np. podawać ją na różny szereg kół sumatora przesuwany, przed kolejnymi operacjami dodania, o jedno koło dalej (w lewo), co odpowiadało dodatkowemu mnożeniu tej liczby przez 10. Jednakże jednoczesne ustawienie kół sumatora, jakie odbywało się podczas drugiego etapu, stwarzało nowy problem, jakim była potrzeba zmiany konstrukcji mechanizmu przeniesienia dziesiętnego, która do tej pory była przystosowana do szeregowego wprowadzania cyfr, jedna po drugiej, a nie jednoczesnego.

Koła sumatora wykonują operacje równolegle

Gdyby pominąć mechanizm przeniesienia dziesiętnego, można byłoby powiedzieć, że koła zliczające sumatora są elementami pracującymi w sposób równoległy (niezależny). Informacje o ilościach obrotów mogą być wówczas przesyłane do poszczególnych kół sumatora jedną szyną danych i w jednym cyklu (podobnie jak szyna danych w komputerze).

Rozpatrzę dalej przypadek wprowadzania liczby do sumatora na konkretnym przykładzie. Liczbę np. 847 można przedstawić w postaci sumy składników ułożonych w różnej kolejności (patrz poniższa tabela). Wskazuje to, że cyfry na koła sumatora mogą być wprowadzane w dowolnej kolejności (w tabeli, cyfra oznaczona podkreśleniem, wskazuje cyfrę wprowadzaną na koło sumatora, a o wyborze koła decyduje mnożnik dziesiętny występujący przy cyfrze i oznaczony kolorem czerwonym).

Prowadzenie liczby 847 do sumatora poprzez ustawianie kół
w różnej kolejności
liczba w sumatorze + 847 =
liczba w sumatorze + 8 * 100 + 4 * 10 + 7 * 1 =
liczba w sumatorze + 7 * 1 + 4 * 10 + 8 * 100 =
liczba w sumatorze + 4 * 10 + 7 * 1 + 8 * 100 =
Liczba w sumatorze + równocześnie ?

Jak widać z tego przykładu, aby wprowadzić do sumatora liczbę 847 nie musimy zaczynać od koła jedności (cyfra 7). Możemy zacząć wprowadzanie od koła setek (cyfra 8), jak też od koła dziesiątek (cyfra 4). Inaczej mówiąc, cyfry liczby możemy wprowadzać do sumatora od lewej jego strony do prawej, jak też od prawej do lewej i w sposób mieszany. Nie wpływa to na wynik dodawania. Jeżeli teraz w naszym przykładzie uwzględnimy mechanizm przeniesienia, to bez względu na konstrukcję tego mechanizmu, będzie on działał poprawnie. Warunkiem tej poprawności jest, aby wprowadzanie cyfr odbywało się cyfra po cyfrze, a nie wszystkie cyfry jednocześnie.

Powstaje pytanie, a co się stanie, kiedy cyfry wstawiać będziemy jednocześnie?

Istnieją wówczas dwa przypadki. Pierwszy przypadek wystąpi wówczas, kiedy podczas dodawania zawartości sumatora do liczby (na przykład w przypadku dodawania liczb 236 i 452) nie mamy żadnego przeniesienia dziesiętnego. Operacja zostanie wtedy wykonana poprawnie i bez żadnych trudności.

W drugim przypadku natomiast, kiedy podczas jednoczesnego obracania kół wystąpi na jakimś kole potrzeba dodatkowego uwzględnienia przeniesienia dziesiętnego z poprzedniego koła (przy jego obrocie z 9 na 0), wystąpi wtedy kolizja działań. Albo przekręcić koło o jeden ząb i uwzględnić przeniesienie, albo w dalszym ciągu przekręcać koło do wyczerpania potrzebnej ilości zębów wynikającej z wprowadzanej cyfry.

Nasuwa się od razu taka sugestia, że należy wówczas zrobić szereg następujących czynności jak: przerwać proces wstawiania cyfry, odłączyć mechanizm wstawiania, dołączyć mechanizm przeniesienia dla dodania jedynki, a po jej dodaniu, odłączyć mechanizm przeniesienia i ponownie załączyć mechanizmu wstawiania cyfry w celu dokończenia procesu wstawienia. Procedura ta jednak wydaje się nazbyt skomplikowana i nieefektywna czasowo, jak dla elementów mechanicznych.

Zdarza się także, że dodana jedynka (na skutek przeniesienia), jest źródłem kolejnego przeniesienia na dalszym kole. Na przykład dla sumatora sześciopozycyjnego, przy stanie sumatora 99 999, dodanie dowolnej cyfry na kole jedności , powoduje rozchodzenie się przeniesienia dziesiętnego wzdłuż całego sumatora, co wiąże się z potrzebą dodania jedynki na wielu kołach. Przy takiej ciągłej serii przeniesień występuje (dla pewnych konstrukcji sumatorów) groźba powstawania zbyt dużego naprężenia w pierwszych kołach należących do szeregu kół obsługujących tą serię przeniesień oraz zwiększone zapotrzebowanie na siłę zasilającą spowodowaną jednoczesną pracą wielu kół. Wiąże się to także z wytrzymałością użytych materiałów na konstrukcję sumatora. Szczególnie trapiło to konstruktorów pierwszych sumatorów. Efektem tego mogło być na przykład ograniczenie liczby pozycji sumatora do sześciu pozycji

Jak z tego wynika konstrukcja przeniesienia dziesiętnego była piętą Achillesową pierwszych sumatorów i stawiała wyznanie dla konstruktorów tych maszyn.

Dodawanie w sumatorze mechanicznym

Aby przybliżyć proces dodawania w sumatorze mechanicznym posłużę się przykładem dodawania dwóch liczb całkowitych.

Mamy na przykład wykonać następujące dodawanie:

238 + 609 = 847

Najpierw pokażę, w jaki sposób operację dodawania wykonałem w myśli, aby później porównać, czym się ona różni od operacji wykonanej przez sumator mechaniczny.

Wykonałem w myśli dodawanie w następujący sposób: jedności z pierwszej liczby dodałem do jednostek z drugiej liczby. W ten sam sposób dziesiątki do dziesiątek, powiększając przy tym otrzymaną sumę o przeniesienie z poprzedniego dodawania. Na koniec setki do setek. Otrzymałem wynik 847. Pisemny zapis dodawania przedstawiłem poniżej.

1  
- - 
238 
609 
------ 
847 

Wyobraźmy sobie maszynę liczącą, w której elementami liczącymi są trzy koła zębate. Każde koło posiada dziesięć zębów ponumerowanych od 0 do 9. Pierwsze koło (licząc od prawej) odpowiada pozycji jednostek w liczbie, drugie dziesiątek, a trzecie setek.

Aby wykonać dodawanie ustawiamy najpierw koła w pozycji początkowej 000 (przyjmijmy, że cyfra na górnym zębie jest miarą położenia tego koła).

Aby wprowadzić do sumatora liczbę 238 przekręcamy najpierw pierwsze koło (licząc od prawej strony) o 8 zębów, drugie koło o 3 zęby, a trzecie koło o 2 zęby (zgodnie z ruchem wskazówek zegara).

Przy wprowadzaniu kolejnej liczby 609, pierwsze koło (od prawej) przekręcamy o kolejne 9 zębów, drugie koło pozostawiamy bez zmian i trzecie koło przekręcamy o kolejne 6 zębów.

W trakcie obracania pierwszego koła o 9 zębów, obrót o drugi ząb powoduje zmianę położenia z 9 na 0. Ostatecznie koło zatrzymuje się w położeniu 7. W momencie przechodzenia pierwszego koła z położenia 9 na 0 następuje automatyczne przekręcenie drugiego koła o jeden ząb, w wyniku czego przechodzi ono z położenia 3 do 4 (takie działanie nazywamy przeniesieniem z pierwszego koła).

Z końcowego ustawienia kół odczytujemy wynik 847. Fazy położenia kół przy dodawaniu przykładowych liczb przedstawia poniższy rysunek.

sumator mechaniczny

W wyniku dodania liczby 238 do wyzerowanego sumatora, a następnie liczby 609 do zawartości sumatora otrzymujemy na kołach wynik 847. Maszyna sama policzyła.

Wykonanie dodawania liczb 238 i 609 przy pomocy sumatora przedstawia także poniższa tabela.

238 + 609 Nr koła od
prawej
VI V IV III II I
prowadzanie
od koła
pozycja działanie obrót koła w ilościach zębów
I x 1 + 238       2 3 8
I x 1 + 609       6 0 9
  Przeniesienie w ilościach
zębów
        1  
wynik       8 4 7

Mnożenie w sumatorze mechanicznym

Na wstępnie chciałbym zaznaczyć że sumator, jak sama nazwa wskazuje, potrafi tylko dodawać i co najwyżej jeszcze odejmować (obrót kołami w przeciwną stronę) oraz mnożyć przez wielokrotność liczby 10 (wprowadzanie liczby na inne koła). Aby wykonywał inną operację mnożenia, to może to robić, ale tylko poprzez dodawanie. Poniższa tabela przedstawia dwa sposoby zamiany mnożenia na dodawanie dla dwóch rodzajów maszyny liczącej.

Schemat mnożenia: 847*243 Rodzaj
kalkulatora
=(847*3) * 1 + (847*4) * 10 +
(847*2) * 100

po odczycie z cylindrów Napiera

= 2541 * 1 + 3388 * 10 + 1694 *
100
Schickard
=(847 + 847 + 847) * 1 +
(847 + 847 + 847 + 847) * 10 +
(847 + 847) * 100
Leibniz

Liczby, które należy wprowadzić do sumatora zostały w tabeli oznaczone podkreśleniem, natomiast wybór koła, od którego należy zacząć wprowadzanie tych liczb, zależy od mnożnika oznaczonego kolorem czerwonym.

W przypadku pierwszego kalkulatora musimy niestety pomóc maszynie liczącej i sami policzyć, przy pomocy cylindrów Napiera, iloczyny liczb (iloczyny te w tabeli są ujęte w nawiasy). Następnie pozostaje tylko otrzymaną liczbę 2541 wprowadzić do sumatora rozpoczynając wprowadzanie od pierwszego koła (od prawej), liczbę 3388 z mnożnikiem 10 wprowadzić rozpoczynając wprowadzanie od drugiego koła i analogicznie liczbę 1694 z mnożnikiem 100 wprowadzić od trzeciego koła. Otrzymujemy wynik 205 821.

W przypadku drugiego kalkulatora iloczyn zostanie obliczony maszynowo poprzez kolejne dodawanie tej samej liczby 847. Aby to wykonać rozpoczynamy wprowadzanie liczby 847 od pierwszego koła (od prawej). Czynność tą powtarzamy 3 razy. Następnie wykonujemy wprowadzanie liczby 847 od drugiego koła. Czynność tą powtarzamy 4 razy. Na koniec wykonujemy wprowadzanie liczby 847 od trzeciego koła. Czynność tą powtarzamy 2 razy. Otrzymujemy wynik 205 821.

Ponieważ w drugim kalkulatorze powtarzamy tą samą czynność wiele razy, warto było raz wprowadzić liczbę 847 do jakiegoś rejestru, z którego następnie w sposób automatyczny można było wprowadzać tą liczbę do sumatora, ustalając jedynie ilość tych operacji i od którego koła je wykonujemy.

Drugi kalkulator okazał się lepszy, gdyż całkowicie wykonuje mnożenie, ale wymagał od konstruktora opracowanie koła o zmiennej ilości zębów, potrzebnego do mechanizmu automatycznego wprowadzania liczby do sumatora.

Poniżej przedstawię szczegółowo oba sposoby mnożenia.

Mnożenie za pomocą tabliczki mnożenia

Aby przybliżyć proces mnożenia w sumatorze mechanicznym posłużę się przykładem mnożenia dwóch liczb całkowitych.

Mamy na przykład wykonać następujące mnożenie:

847 * 243 = 205821

Mnożenie to można przekształcić też do następującej postaci.

847 * 243 = (847 * 3) * 1 + (847 * 4) * 10 +
(847 * 2) * 100

Najpierw pokażę, w jaki sposób operację mnożenia wykonałem w myśli, aby później porównać, czym się ona różni od operacji wykonanej przez sumator mechaniczny.

Wykonałem w myśli mnożenie w następujący sposób: liczbę 847 przemnożyłem przez liczbę 3, potem 847 przez 4 i na koniec 847 przez 2. Do przemnożenia tych liczb wykorzystałem zapamiętaną w pamięci (ze szkoły podstawowej) tabliczkę mnożenia liczb od 1 do 10. Wyniki przemnożeń zapisałem na kartce, jeden pod drugim, przesuwając kolejny wynik o jedną pozycję w lewo i dodałem. Otrzymałem liczbę 205821. Sposób wykonania moich obliczeń przedstawiłem poniżej.

      847
   *    3
      8 4 7
   *    4
      8 4 7
   *  2
   Wynik 
           
       21(3*7)
   +  12 (3*4)
   + 24  (3*8)
--------------
   = 2541
           
       28(4* 7)
   +  16 (4* 4)
   + 32  (4* 8)
--------------
   = 3388
           
     14(2* 7)
 +  08 (2* 4)
 + 16  (2* 8)
-------------
 = 1694
   1111   
 - - - - -
     2541
 +  3388
 + 1694
 ---------
 = 205821

Można zauważyć, że pomimo mnożenia liczb wielocyfrowych, mnożyłem w pamięci tylko liczby jednocyfrowe, a potem wykonywałem tylko dodawanie. Prawdopodobnie podobnym spostrzeżeniem musiał się też kierować Wilhelm Schickard, niemiecki matematyk żyjący w 17 wieku. Ponieważ sumator mechaniczny nie potrafi w sposób bezpośrednio mnożyć (oprócz mnożenia liczby przez wielokrotność 10 poprzez wprowadzanie tej liczby na inne koła liczące), musimy więc dostarczyć mu tablicę z wynikami mnożeń liczb jednocyfrowych, zwaną powszechnie tabliczką mnożenia. Jest ona już wystarczająca do uzyskania iloczynów liczb wielocyfrowych. Jednakże sumator mechaniczny nie potrafi sam przeszukiwać tablicy i wybierać potrzebne składniki do dalszego dodawania. Musimy samemu przeszukiwać tablicę i odczytywać potrzebne liczby, aby następnie wprowadzić je do sumatora. Poniższa tabela przedstawia możliwość skorzystania z dwóch rodzajów tablic: tabliczki mnożenia i kostek Napiera będących w zasadzie tym samym.

847 * 243 =
Skorzystanie z tabliczki mnożenia Skorzystanie z kostek Napiera
    1111   
- - - - - -
        21 
   +   12  
   +  24   
-----------
  +    28  
  +   16   
  +  32    
-----------
 +    14   
 +   08    
 +  16     
-----------
 =  205821
1
2
3
4
5
6
7
8
9
10
8 4 7
16 08 14
24 12 21
32 16 28
40 20 35
48 24 42
56 28 49
64 32 56
72 36 63
80 40 70
8 4 7
1/6 0/8 1/4
2/4 1/2 2/1
3/2 1/6 2/8
4/0 2/0 3/5
4/8 2/4 4/2
5/6 2/8 4/9
6/4 3/2 5/6
7/2 3/6 6/3
8/0 4/0 7/0
 
 3*847=2 | 4+1 | 2+2 | 1 = 2541
 4*847=3| 2+1 | 6+2 | 8 = 3388
 2*847=1| 6+0 | 8+1 | 4 = 1694
 1111   
 - - - - -
     2541
 +  3388
 + 1694
 ---------
 = 205821

Wykonanie mnożenia liczb 847 i 243 przy pomocy sumatora z wykorzystaniem tablicy Napiera przedstawia poniższa tabela.

847 * 243 Nr koła licząc od prawej Kostki Napiera
VI V IV III II I
prowadzanie
od koła
pozycja działanie obrót koła w ilościach zębów
odczytane z cylindrów Napiera
Kostki Napiera
3*847=2 | 4+1 | 2+2 | 1 = 2541
4*847=3 | 2+1 | 6+2 | 8 = 3388
2*847=1 | 6+0 | 8+1 | 4 = 1694
I x 1 + (3*847)     2 1+4 2+2 1
II x 10 + (4*847)*10   3 1+2 2+6 8  
III x 100 + (2*847)*100 1 6+0 1+8 4    
  Ilość przeniesień
1 1 1 1    
wynik 2 0 5 8 2 1  

Mnożenie tylko przez dodawanie

Poprzednio opisany sposób mnożenia, nie nadawał się do całkowitej automatyzacji. Posiadał elementy obliczeń, których nie dało się zautomatyzować. Potrzebna była pomoc człowieka.

Inny konstruktor, również niemiecki matematyk Wilhelm Leibniz, żyjący w 17 wieku, skonstruował maszynę liczącą, która korzystała z innego sposobu mnożenia, w którym mnożenie zostało całkowicie zastąpione dodawaniem. Można było wtedy powiedzieć, że maszyna licząca potrafiła już mnożyć, bez intelektualnej pomocy człowieka.

Sposób mnożenia wykonany pisemnie został pokazany w poniższej tabeli.

847
* 243
24542 
- - - - - 
847
+   847
+   847
-----------
+   847 
+   847 
+   847 
+   847 
-----------
+   847  
+   847  
+   847  
-----------
 =  205821

Jak łatwo można zauważyć sposób ten wynika z zamiany mnożenia na sumę następujących składników.

847 * 243 =
   (847 + 847 + 847 * 1
 + (847 + 847 + 847 + 847) * 10
 + (847 + 847) * 100

Liczbę oznaczoną w tabeli podkreśleniem wprowadzany raz do specjalnego rejestru do maszyny liczącej, a następnie wykonujemy tylko operacje czysto mechaniczne.

Wykonanie mnożenia liczb 847 i 243 przy pomocy sumatora przedstawia poniższa tabela.

847 * 243 Nr koła licząc od prawej Metoda
wprowadzania
VI V IV III II I
prowadzanie
od koła
pozycja działanie obrót koła w
ilościach zębów
I x 1 + 847       8 4 7 3 obroty korbą
na pozycji x 1
I x 1 + 847       8 4 7
I x 1 + 847       8 4 7
II x 10 + 847*10     8 4 7   4 obroty korbą
na pozycji x 10 
II x 10 + 847*10     8 4 7  
II x 10 + 847*10     8 4 7  
II x 10 + 847*10     8 4 7  
III x 100 + 847*100   8 4 7     2 obroty korbą
na pozycji x 100
III x 100 + 847*100   8 4 7    
  Ilość przeniesień  
2 4 5 4 2  
wynik 2 0 5 8 2 1

Powyższą operację można było oczywiście wykonać sumatorem Schickarda, ale w sposób bardzo żmudny. Należało ręcznie wprowadzić do sumatora 27 cyfr, jedna po drugiej. Może dlatego Schickard nie brał pod uwagę tego sposobu liczenia. Natomiast specjalnie skonstruowana do tego celu maszyna Leibniza wykonywała operację bardzo łatwo w sposób czysto mechaniczny (dziewięć obrotów korbką i trzy przestawienia pozycji) po wprowadzenia zaledwie jednej liczby do maszyny.

Sumator binarny

Rozpatrzmy w sposób teoretyczny taki przypadek, że koła liczące sumatora mają tylko dwa zęby (pomińmy kwestię techniczną realizacji takiego sumatora). Przypadek taki zaważył na dalszy rozwój maszyn liczących. Przenosząc założenia konstrukcyjne z sumatora dziesiętnego otrzymujemy następujące założenia:

  • liczby w sumatorze są zapisane w układzie dwójkowym (binarnym)
  • koła liczące posiadają po 2 zęby, które są przyporządkowane cyfrom 0 i 1.
  • dla każdego koła liczącego istnieją 2 stany stabilne , inne są przejściowe
  • istnieje mechanizm przeniesienia. Przeniesienie występuje podczas sumowania cyfr na kole liczącym, podczas którego, w czasie jego obrotu, przechodzi ono z pozycji 1 na 0. Musi nastąpić wówczas dodanie jedynki do następnego koła (po lewej stronie).
  • cyfra o wartości 1 jest wprowadzana do sumatora poprzez ustawianie koła liczącego w sposób następujący: jeśli na kole jest zaznaczona cyfra 0 do ustaw cyfrę 1, jeśli jest zaznaczona cyfra 1 to ustaw cyfrę 0 i podaj przeniesienie na koło sąsiednie (dodaj do koła sąsiedniego jedynkę). Dla cyfry 0 koło pozostaw w spokoju.
  • cyfrę 0 ustawia się na kołach sumatora tylko przy jego zerowaniu

Dodawanie w sumatorze binarnym

Aby przybliżyć proces dodawania w sumatorze z dwoma zębami posłużę się przykładem dodawania dwóch liczb całkowitych.

Mamy wykonać następujące dodawanie:

238 + 609 = 847

Aby wykonać tą operację należy najpierw zamienić liczby dziesiętne na zapis tych liczb w sumatorze z dwoma zębami.

238 =   11101110
609 = 1001100001
847 = 1101001111

Następnie wykonuję dodawanie w następujący sposób: cyfry z tych samych pozycji obu liczb dodaję do siebie.

Okazuję się, że jest to operacja o wiele prostsza od sumowania liczb dziesiętnych, gdyż sumowanie dotyczy tylko cyfr 0 i 1. Na uwagę zasługuje suma 1+1, której skutkiem jest wynik 0 oraz przeniesienie jedynki na następną pozycję. Pisemny zapis dodawania, jakie wykonałem przedstawiłem poniżej (dla porównania podałem odpowiednik sumowania dziesiętnego).

238 + 609 = 847
binarnie dziesiętnie
   111
 - - - - - - 
    11101110
+ 1001100001
------------
  1101001111
     1
   - - 
   238
 + 609
------
 = 847 

Sumowanie liczb 238 i 609 za pomocą sumatora z kołem z dwoma zębami przedstawia poniższa tabela.

238 + 609 Nr koła od prawej
10 9 8 7 6 5 4 3 2 1
prowadzanie
od koła
pozycja działanie obrót koła w
ilościach zębów
1 x 1 + 238     1 1 1 0 1 1 1 0
1 x 1 + 609 1 0 0 1 1 0 0 0 0 1
  Ilość przeniesień
  1 1 1            
wynik 1 1 0 1 0 0 1 1 1 1

Mnożenie w sumatorze binarnym

Aby wyjaśnić proces mnożenia w sumatorze z dwoma zębami posłużę się przykładem mnożenia dwóch liczb całkowitych.

847 * 243 = 205821

Aby wykonać tą operację należy najpierw liczby dziesiętne zamienić zapis tych liczb w sumatorze z dwoma zębami.

   847 =         1101001111
   243 =           11110011
205821 = 110010001111111101

Następnie wykonałem mnożenie w następujący sposób: cyfry obu liczb przemnożyłem przez siebie.

Była to operacja o wiele prostsza od operacji mnożenia liczb dziesiętnych, gdyż mnożenie cyfr ograniczało się jedynie do cyfr 0 i 1.

Na końcu dodałem wyniki mnożenia. Operacje, które wykonałem przedstawiłem w poniższej tabeli. Dla porównania, podałem odpowiednik mnożenia dziesiętnego tych liczb (sposób stosowany w sumatorze Leibniza).

847 * 243
binarnie dziesiętnie
          1101001111
        *   11110011
       847
     * 243
  1222223333211111
 - - - - - - - - - -
          1101001111
 +       1101001111
 +      0000000000
 +     0000000000
 +    1101001111
 +   1101001111
 +  1101001111
 + 1101001111
  ------------------
= 110010001111111101
    24542
- - - - - 
       847 
   +   847 
   +   847 
-----------
  +   847
  +   847
  +   847
  +   847
-----------
 +   847 
 +   847 
 +   847 
-----------
 =  205821

Mnożenie liczb 847 i 243 za pomocą sumatora z kołami z dwoma zębami przedstawia poniższa tabela.

847 * 243 Nr koła licząc od prawej
18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
prowadzanie
od koła
pozycja działanie obrót koła w
ilościach zębów
1 x 1 + 847                 1 1 0 1 0 0 1 1 1 1
2 x 2 + 847*2               1 1 0 1 0 0 1 1 1 1  
3 x 4 + 847*4                                    
4 x 16 + 847*16                                    
5 x 32 + 847*32         1 1 0 1 0 0 1 1 1 1        
6 x 64 + 847*64       1 1 0 1 0 0 1 1 1 1          
7 x 128 + 847*128     1 1 0 1 0 0 1 1 1 1            
8 x 256 + 847*256   1 1 0 1 0 0 1 1 1 1              
  Ilość przeniesień
1 2 2 2 2 2 3 3 3 3 2 1 1 1 1 1    
wynik 1 1 0 0 1 0 0 0 1 1 1 1 1 1 1 1 0 1
= 205821

Realizacja sumatora binarnego

Przypadek sumatora z kołami z dwoma zębami rozważałem nie zważając na praktyczną realizację takiego sumatora. Poprzez uogólnienie założeń konstrukcyjnych, jakie podałem dla sumatora z kołami z dwoma zębami, można otrzymać założenia dla maszyny o dowolnej konstrukcji, nie tylko mechanicznej.

Poniżej podaję te uogólnienia (słowo "koło" zamieniłem na słowo "element")

  • liczby są zapisane w układzie dwójkowym (binarnym)
  • elementy liczące posiadają dwa stany stabilne, jeden oznaczony jako 0 drugi jako 1, inne stany są przejściowe.
  • istnieje mechanizm przeniesienia. Przeniesienie występuje podczas sumowania cyfr na elemencie liczącym, podczas którego, przechodzi on ze stanu 1 na 0. Musi nastąpić wówczas dodanie jedynki do następnego elementu (po lewej stronie).
  • cyfra 1 jest wprowadzana do sumatora poprzez ustawianie elementu liczącego w sposób następujący: jeśli jest w stanie 0 do ustaw stan 1, jeśli jest w stanie 1 to ustaw stan 0 i podaj przeniesienie na element sąsiedni (dodaj do elementu sąsiedniego jedynkę). Dla cyfry 0 element pozostaw w spokoju.
  • cyfrę 0 ustawia się na elementach liczących tylko przy jego zerowaniu

Korzyści ze stosowania zapisu binarnego są znaczne. Istotną cechą tego zapisu jest to, że umożliwia on wykorzystanie, do jego realizacji, dowolnego zjawiska fizycznego, w którym występują dwa dobrze określone stany.

Co więcej, wystarczy pewna cecha tego zjawiska, w której można określić, czy jest coś, czy brak tego. Wielkość zjawiska czy fluktuacje jego natężenia nie mają żadnego wpływu na wartość zawartej informacji, gdyż nieważne jest natężenie, tylko obecność czegoś lub brak. Z tego tytułu taka forma zapisu jest bardzo wytrzymała na zniekształcenie informacji przez czynniki zewnętrzne.

Poprzez przyporządkowanie liczbom liter czy innych symboli istnieje możliwość przetwarzania i przechowywania również danych nienumerycznych.

O możliwości zbudowania sumatora dwójkowego (binarnego) oraz o własnościach zapisu binarnego czy prostocie operacji arytmetycznych w tych systemie wiedziano już w 17 wieku dzięki pracom niemieckiego matematyka Wilhelma Leibniza. W 1679 Leibniz przedstawił nawet pomysł sumatora mechanicznego wykorzystującego binarną arytmetykę. Pragnę przypomnieć, że o samym zapisie binarnym wiedziano już 2800 lat p.n.e.

Obecna technika komputerowa jest ciągłym procesem technologicznym do coraz to lepszej realizacji i wykorzystania pomysłu przedstawienia liczb z systemie dwójkowym (binarnym). Zamiast konstrukcji mechanicznych są stosowane obecnie konstrukcje wykorzystujące własności elektryczne materiałów przewodzących, izolatorów i materiałów półprzewodzących oraz własności magnetyczne, optyczne i generatorów światła spójnego (laserów).

Waldemar Wietrzykowski
Computational Neuroscience
Digital Intelligence Laboratory
email: mail

Zobacz też

Linki

dil

<  1  2  3  4  5  6  7  8  9  10  11  12

Copyright  © 15.10.2007 net3plus  mail