Dvejetainė skaičiavimo sistema

**Dvejetainė skaičiavimo sistema** – skaičiavimo sistema, išreiškianti skaitines reikšmes naudojant du simbolius – 0 ir 1. Kiekvienas skaitmuo yra vadinamas bitu arba dvejetainiu skaitmeniu. Dėl paprasto įgyvendinimo skaitmeninėje elektronikoje naudojant loginius elementus, dvejetainė skaičiavimo sistema yra naudojama kompiuteriuose ir kituose elektroniniuose prietaisuose.

Dvejetainis skaičius gali būti išreikštas tam tikra bitų (dvejetainių skaitmenų) seka. Pvz., skaičius 667 dvejetainių kodu gali būti užrašytas taip: 1010011011. Skaičiai nebūtinai turi būti sveikieji. Pavyzdžiui, 1,5 dvejetainėje sistemoje gali būti užrašoma kaip 1,1 o 1,25 kaip 1,01.

## Istorija
Šiuolaikinė dvejetainė skaičių sistema Europoje buvo tyrinėta XVI–XVII a. mokslininkų Thomas Harriot, Juan Caramuel y Lobkowitz, Gottfried Leibniz bei kitų. Visgi skaičiavimo sistemos, susijusios su dvejetainiais skaičiais, daugelyje kultūrų atsirado daug anksčiau (pvz., Senovės Egipte, Kinijoje ir Indijoje).

### Egiptas
Senovės Egipto raštininkai savo trupmenoms naudojo dvi skirtingas sistemas: Egipto trupmenas (nesusijusias su dvejetaine skaičių sistema) ir Horo akies trupmenas (taip vadinasi, nes daugelis matematikos istorikų mano, kad šiai sistemai naudojami simboliai gali būti išdėstyti kaip Horo akis, nors tai buvo ginčijama). Horo akies trupmenos yra dvejetainė skaičiavimo sistema, kurią naudojo daliniams grūdų, skysčių ar kitų matų kiekiams, joje hekato dalis išreiškiama kaip dvejetainių trumpmenų 1/2, 1/4, 1/8, 1/16, 1/32 ir 1/64 suma.

Senovės egiptiečių naudotas daugybos metodas taip pat glaudžiai susijęs su dvejetainiais skaičiais. Taikant šį metodą, vieno skaičiaus daugyba iš kito atliekama seka veiksmų, kurių metu reikšmė padvigubinama arba prie jos vėl pridedamas pirmasis skaičius; tvarka, kuria šie veiksmai turi būti atliekami, pateikiama dvejetainiu antrojo skaičiaus vaizdavimu. Šio metodą panaudojimą galima pamatyti Rhindo matematiniame papiruse, kuris datuojamas maždaug 1650 m. pr. m. e.

### Leibnicas ir dvejetainiai skaičiai

Leibnicas 1679 m. studijavo dvejetainę numeraciją; 1703 m. jis paskelbė straipsnį pavadinimu *Explication de l’Arithmétique Binaire*. Išvertus į lietuvių kalbą - *„Dvejetainės aritmetikos paaiškinimas“*. Leibnico sistemoje naudojami 0 ir 1, kaip ir šiuolaikinėje dvejetainėje skaičių sistemoje. Leibnico dvejetainių skaičių sistemos pavyzdys:
: 0 0 0 1 yra lygu skaičiui 20
: 0 0 1 0 yra lygu skaičiui 21
: 0 1 0 0 yra lygu skaičiui 22
: 1 0 0 0 yra lygu skaičiui 23
Leibnicas naudojo heksagramą iš I Ching knygos kaip dvejetainio skaičiavimo įrodymą. Būdamas sinofilu, Leibnicas žinojo apie I Ching knygą, žavėjosi kaip knygoje naudota heksagrama atitinka dvejetainius skaičius nuo 0 iki 111111 ir iš to padarė išvadą apie didelius Kinijos pasiekimus filosofinėje matematikoje, kuria jis labai žavėjosi. Dvejetainiai skaitmenys Leibnicui buvo pagrindiniai teologijos elementai. Jis tikėjo, kad dvejetainiai skaičiai simbolizuoja krikščionišką kūrimo iš nieko įdėją.

### Tolimesnis vystymasis
1854 m. britų matematikas George’as Boole’as paskelbė reikšmingą dokumentą, kuriame išsamiai aprašoma algebrinė logikos sistema, kuri tapo žinoma kaip Būlio algebra. Jo loginis skaičiavimas turėjo tapti priemone kuriant skaitmenines elektronines grandines.

1937 m. Klodas Šanonas MIT parengė savo magistro darbą, kuriame pirmą kartą naudojant elektronines reles ir jungiklius pademonstravo Būlio algebros ir dvejetainės aritmetikos veikimą. Šanono disertacija, pavadinta *A Symbolic Analysis of Relay and Switching Circuits*, iš esmės pagrindė praktinį skaitmeninių grandinių projektavimą.

1937 m. lapkritį George’as Stibitz’as, dirbdamas „Bell Labs“, sukūrė relės pagrindo kompiuterį, kurį pavadino „Model K“ arba „Model Kitchen“, kuris gebėjo skaičiuoti dvejetainių skaičių sudėtį. „Bell Labs“ 1938 m. pabaigoje pradėjo mokslinių tyrimų programą su Stibitz’u priešakyje. Jų „Sudėtingų Skaičių Kompiuteris“ buvo užbaigtas 1940 m. sausio 8 d., kuris sugebėjo apskaičiuoti kompleksinius skaičius. 1940 m. rugsėjo 11 d. demonstruodamas kompiuterį Amerikos matematikų draugijos konferencijoje Dartmund’o koledže, Stibitz’as sugebėjo teletaipiniu būdu telefono linijomis nusiųsti nuotolines vykdymo komandas kompiuteriui. Tai buvo pirmasis kompiuterinės mašinos panaudojimas nuotoliniu būdu.

## Dvejetainių skaičių aritmetika
Dvejetainių skaičių aritmetika labai panaši į kitų skaičiavimo sistemų. Dvejetainius skaičius galime sudėti, atimti, dauginti ir dalyti.

### Sudėtis
Paprasčiausia aritmetinė operacija dvejetainių skaičių aritmetikoje yra sudėtis.

Pvz:
```
1 1 1 1 1 (pernešami skaičiai)
     0 1 1 0 1
 +   1 0 1 1 1
 -------------
 = 1 0 0 1 0 0
```

### Atimtis

Pvz:
```
*   * * *   (iš žvaigždute pažymėtų stulpelių pasiskolinami bitai)
  1 1 0 1 1 1 0
−     1 0 1 1 1
----------------
= 1 0 1 0 1 1 1

   *            (iš žvaigždute pažymėtų stulpelių pasiskolinami bitai)
  1 0 1 1 1 1 1
-   1 0 1 0 1 1
----------------
= 0 1 1 0 1 0 0
```


### Daugyba
Daugyba dvejetainiu būdu yra panaši į dešimtainių skaičių daugybą. Du skaičiai A ir B gali būti padauginti iš dalinių sandaugų: kiekvienam B skaitmeniui apskaičiuojama to skaitmens A sandauga ir įrašoma į naują eilutę, paslinktą į kairę taip, kad jo dešinysis skaitmuo sutaptų su B skaitmeniu, kuris buvo naudojamas prieš tai. Visų šių dalinių produktų suma yra skaičiaus A ir B suma.

Kadangi dvejetainį skaičių sudaro tik du skaitmenys, vadinasi yra galimi tik du kiekvieno dalinio daugybos rezultatai:

* Jei skaitmuo B yra 0, dalinė sandauga taip pat lygi 0
* Jei B skaitmuo yra 1, dalinė sandauga yra lygi A

Pavyzdžiui, dvejetainių skaičių 1011 ir 1010 daugyba vyksta taip:

```
1 0 1 1   (A)
         × 1 0 1 0   (B)
         ---------
           0 0 0 0   ← Atitinka 0 X 1011
   +     1 0 1 1     ← Atitinka 1 X 1011
   +   0 0 0 0
   + 1 0 1 1
   ---------------
   = 1 1 0 1 1 1 0
```


## Dešimtainių skaičių vertimas į dvejetainius

Viską daliname iš 2, jeigu lieka liekana, rašome 1, jeigu sveikas skaičius, rašome 0, pvz:
; 667|1: 667:2=333,5
; 333|1: 333:2=166,5
; 166|0: 166:2=83
; 83|1: 83:2=41,5
; 41|1: 41:2=20,5
; 20|0: 20:2=10
; 10|0: 10:2=5
; 5|1: 5:2=2,5
; 2|0: 2:2=1
; 1|1: 1:2=0,5

Tada gautus skaičius rašome nuo apačios į viršų, pvz: 
**1|1** 
**2|0** 
Atsakymas bus: **1010011011**

## Dvejetainių skaičių vertimas į dešimtainius

Pavyzdinė schema, kaip 101101,1011(2) verčiamas į 45,6875(10)

## Šaltiniai