Programovanie makier v LibreOffice: Operátory (4)

LO.png Záverečný diel cyklu o operátoroch. Uvidíte príklad na bitové operátory.  

Príklad na bitové operátory

Poznáte už niečo z výrokovej logiky. Taktiež už by vám nemali byť cudzie pojmy ako bitový operátor alebo bitová reprezentácia nejakého desiatkového čísla. Na záver cyklu o operátoroch si ukážeme jeden príklad na bitové operátory. Každý jednotlivý bitový operátor bude možné použiť len malou obmenou v kóde.

1. príklad: Bitový operátor AND

Sub BitConverter(ByVal cislo, ByVal pocet) As String

Dim bit0 As String 
Dim bit1 As String
Dim retazec As String

If (cislo >= 0) Then
 bit1 = "1"
 bit0 = "0"
End If

Do While pocet > 0 REM algoritmus na zmenu desiatkovej reprezentácie do binárnej podoby 
 If (cislo AND 1) = 1 Then REM podmienka je pravdivá, ak výrok sa rovná 1 po 
logickom súčine!
 retazec = bit1 & retazec
 Else
 retazec = bit0 & retazec
 End If

 cislo = cislo\2
 pocet = pocet – 1
Loop

BitConverter = retazec

End Sub


Sub example

Dim retazec As String
Dim pocet As Integer 

pocet = 8

retazec = BitConverter(11, pocet) & " AND " & BitConverter(7, pocet) & 
" = " & BitConverter(11 AND 7, pocet) & Chr(10) & BitConverter(15, pocet) & 
" AND " & BitConverter(9, pocet) & " = " & BitConverter(15 AND 9, pocet) & 
Chr(10) & BitConverter(8, pocet) & " AND " & BitConverter(21, pocet) & 
" = " & BitConverter(8 AND 21, pocet) & Chr(10) & BitConverter(12, pocet) & 
" AND " & BitConverter(17, pocet) & " = " & BitConverter(12 AND 17, pocet) & 
Chr(10) & BitConverter(14, pocet) & " AND " & BitConverter(13, pocet) & 
" = " & BitConverter(14 AND 13, pocet) & Chr(10)

MsgBox retazec

End Sub

Výsledok makra Výsledok makra

Rozbor makra:

Algoritmus prevedenia desiatkového čísla do binárnej podoby nie je práve najľahší na pochopenie. My si ukážeme presne, ako sa desiatkové číslo zmení na binárne. 

Algoritmus, ktorý zmení desiatkové číslo na dvojkové je vo funkcii BitConverter. Zoberieme napríklad číslo 10 a porovná ho s 1.

Čiže prvá iterácia:

0000 1010  je 10
0000 0001 je 1

Výsledok 10 AND 1 je:

0000 0000 je 0
Výsledok prvej iterácie bude 0

Pred druhou iteráciou najprv algoritmus vydelí číslo 10 číslom 2 a výsledok je 5. 

Druhá iterácia:

0000 0101 je 5
0000 0001 je 1

Výsledok AND je druhej iterácie:

0000 0001 je 1

Výsledok druhej iterácie je 10

Číslo 5 sa vydelí celočíselným delením a výsledok je 2!

Tretia iterácia:

0000 0010 je 2
0000 0001 je 1

Výsledok AND:

0000 0000 je 0
Výsledok tretej iterácie je 010
Číslo 2 sa vydelí 2 a výsledok je 1.

Štvrtá iterácia:

0000 0001 je 1
0000 0001 je 1

Výsledok AND:

0000 0001 je 1

Výsledok tretej iterácie je 1010. 

A tak to pokračuje, až pokým vypíše všetkých 8 bitov.  Hodnotu rozsahu bitovej reprezentácie, v tomto prípade 8-bitovej, rozhoduje premenná pocet. 

Skúsime ešte bitový operátor OR. A zvyšné hádam zvládnete sami. Pôjde len o kozmetickú úpravu. 

2. príklad: Bitový operátor OR

Sub BitConverter(ByVal cislo, ByVal pocet) As String
 
 Dim bit0 As String 
 Dim bit1 As String
 Dim retazec As String
 
 If (cislo >= 0) Then
 bit1 = "1"
 bit0 = "0"
 End If
 
 Do While pocet > 0
 If (cislo AND 1) = 1 Then
  retazec = bit1 & retazec
 Else
  retazec = bit0 & retazec
 End If
 
 cislo = cislo\2
 pocet = pocet-1
 Loop
 
 BitConverter = retazec
 
 End Sub
 
 
 Sub example
 
 Dim retazec As String
 Dim pocet As Integer 
 
 pocet = 8
 
 retazec = BitConverter(11, pocet) & " OR " & BitConverter(7, pocet) & 
" = " & BitConverter(11 OR 7, pocet) & Chr(10) & BitConverter(15, pocet) & 
" OR " & BitConverter(9, pocet) & " = " & BitConverter(15 OR 9, pocet) & 
Chr(10) & BitConverter(8, pocet) & " OR " & BitConverter(21, pocet) & 
" = " & BitConverter(8 OR 21, pocet) & Chr(10) & BitConverter(12, pocet) & 
" OR " & BitConverter(17, pocet) & " = " & BitConverter(12 OR 17, pocet) & 
Chr(10) & BitConverter(14, pocet) & " OR " & BitConverter(13, pocet) & 
" = " & BitConverter(14 OR 13, pocet) & Chr(10)
 
 MsgBox retazec
 
 End Sub

Výsledok makra Výsledok makra

Rozbor makra:

Jediná kozmetická zmena oproti prvému príkladu je v hlavnej procedúre, kde zmeníme bitový operátor AND na bitový operátor OR. Zvyšok je nedotknutý! V ostatných bitových operátorov ako napríklad XOR postupujte obdobne. 

(Jako ve škole) Průměr: 1.00 | Hodnotilo: 3
 

Přidat názor

 

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích najdete v nápovědě. Diskuzi můžete sledovat pomocí RSS kanálu.

 
Eduard Boldižár

Eduard Boldižár

Som redaktorom stránky astrotech.cz. Mám 24 rokov. Čas trávim v IT škole. Medzi moje záľuby patrí astronómia, sci-fi literatúra a programovanie.

 
 
 
woo jaw demo hz