Laŭbita logiko

El Vikipedio, la libera enciklopedio
Saltu al: navigado, serĉo

Laŭbita logiko estas maniero de komputado de logikaj operacioj (logika aŭo, logika kajo, logika neo, logika malinkluziva aŭo), en kiu ĉiu bito de nombroj estas prilaborata aparte.

En klasika logiko, argumentoj de logikaj operacioj povas havi nur valorojn 0 (falso) kaj 1 (vero). Bita variablo estas ĝuste tia variablo, taŭga por logiko

Sed en komputiloj vortoj, kiuj estas argumentoj de operacioj (ne nur de logikaj operacioj sed ankaŭ de operacioj per nombroj kaj la aliaj), enhavas multajn bitojn. Okazas ke eblas facile kalkuli logikan operacion samtempe por ĉiuj bitoj de la vorto.

Laŭbita logiko estas kutime uzata nur por entjeraj variabloj.


Por unuargumenta operacio logika neo ĉiu bito estas prilaborata, kaj poste la rezultoj estas kunmetataj en la sama ordo kaj formas vorton - rezulton.

Por duargumenta operacio (logika aŭo, logika kajo, logika malinkluziva aŭo) estas prenataj duoj de bitoj - po unu bito el ĉiu argumento de la sama pozizioc. Ili estas podue prilaborataj, kaj poste la rezultoj estas kunmetataj en la sama ordo kaj formas vorton - rezulton.

Ekzemplo de logika kajo por 16-bitaj vortoj - kiel estas kalkulata 27229&56894. La argumentoj estas skribataj en duuma sistemo.

 0110 1010 0101 1101
&
 1101 1110 0011 1110
--------------------
 0100 1010 0001 1100

Kaj la rezulto estas 18972.


Laŭbita logiko ebligas ankaŭ operaciojn kiuj ne havas sencon por klasika logiko - bitan ŝovon. En ĝi ĉiu bito estas movata je certa distanco dekstren aŭ maldekstren.


La mala okazo al laŭbita logiko estas la plena logiko.

En ĝi ĉiu argumenta nombro estas konsiderata entute kiel "falso" aŭ "vero". Kutime 0 estas konsiderata kiel "falso" kaj ĉiu alia nombro kiel "vero". La rezulto kutime estas 1 por vero kaj 0 por falso.

Por skribado de plena logiko estas diversaj manieroj, en programlingvoj C, C++ kaj ĉi tie plenaj operacoj estas skribataj kiel && (kajo), || (aŭo), !(neo).

Do ekzemple 27229&&56892 estas 1.

Komputado de plena logiko kutime estas pli malfacila en ĝenerala okazo, sed pli facila se la argumentoj estas rezultoj de komparoj ekzemple.

Plena logiko ebligas ankaŭ komputadon laŭ mallonga vojo. En ĝi, se la unua argumento de kajo estas falso, ne necesas komputi la duan. Kaj se la unua argumento de aŭo estas vero, ne necesas komputi la duan. Ĉi tio kaj plirapidigas komputadon de la tuto kaj ebligas komputadon tiam kiam alie ĝi tute ne estas ebla, se la duan argumenton tute ne eblas komputi.

Ekzemple:

a!=0 && b/a<c

Se a=0 dum komputado laŭ mallonga vojo jam ne necesas kalkuli na b/a<c, la rezulto de la tuto jam estas falso. Se provi kalkuli ĉion se a=0 do dum komputado de b/a<c okazos malsukceso, ĉar estas divido je 0.

Operacio de logika malinkluziva aŭo en plena logiko kutime ne estas realigita en programlingvoj, ĉar (1) ĝi estas malofte bezonata, (2) ĝi ne donas eblecon por komputado laŭ mallonga vojo, ĉar la rezulto ĉiam dependas ankaŭ de la dua argumento.