Regnearter
Spring til navigation
Spring til søgning
Regnearter i Arduino C
Regnearter i JAL
For at regne enkle regnestykker med sproget JAL bruger man de for-definerede operatorer: + - / * % ! & | ^ < < == != < = og =. Med dem kan man det meste fra at addere og subtrahere til at rode med de enkelte bits i en byte og sammenligne størrelse. En komplet liste over operatornes funktion ses nedenfor.
| Operator | Prioritet | Betydning | Venstre argument | Højre argument | Resultat | Eksempel |
|---|---|---|---|---|---|---|
| ! | 5 | Enkelt not (inverter) | bit | bit | pin_a0 = ! pin_ao | |
| ! | 5 | Enkelt not (inverter) | byte | byte | inv_cs = ! cs | |
| + | 5 | Enkelt plus (fortegn) | byte | byte | val = +33 | |
| - | 5 | Enkelt minus (fortegn) | sbyte | sbyte | val = -33 | |
| * | 4 | multiplikation | byte | byte | byte | val = val * 10 |
| / | 4 | division | byte | byte | byte | val = val / 10 |
| % | 4 | modulus | byte | byte | byte | val = val % 10 (giver resten ved en division) |
| + | 3 | plus | byte | byte | byte | val = val + 10 |
| - | 3 | minus | byte | byte | byte | val = val - 10 |
| << | 2 | skift til venstre | byte | byte | byte | val = val << 3 (skifter bit-mønsteret 3 pladser til venstre) |
| >> | 2 | skift til højre | byte | byte | byte | val = val >> 2 (skifter bit-mønsteret 2 pladser til højre) |
| > | 2 | større end | byte | byte | bit | if val > 10 then |
| < | 2 | mindre end | byte | byte | bit | if val < 10 then |
| >= | 2 | større end eller lig med | byte | byte | bit | if val >= 10 then |
| <= | 2 | mindre end eller lig med | byte | byte | bit | if val <= 10 then |
| == | 2 | er lig med | byte | byte | bit | if val == 10 then |
| != | 2 | er ikke lig med | byte | byte | bit | if val != 10 then |
| & | 1 | and | bit | bit | bit | if (val > 2) & (val < 10) then |
| & | 1 | and | byte | byte | byte | val = val & 0b1111_0000 (Masker de 4 høje bit, og sætter de 4 lave bit til 0) |
| | | 1 | or | bit | bit | bit | if (val == 10) | (val == 20) then |
| | | 1 | or | byte | byte | byte | val = val | 0b0000_0011 (sætter de to lave bit til høj, resten uændret) |
| ^ | 1 | xor | bit | bit | bit | pin_a0 = pin_a1 ^ pin_a2 (får to input til at give XOR funktion på et tredje) |
| ^ | 1 | xor | byte | byte | byte | val = val ^ 0b0000_1111 (inverterer de 4 lave bit og lader de 4 høje stå uændret) |
Hvilke begrænsninger er der når man skal regne noget i JAL?
Som nævnt før arbejder man kun med heltal når man bruger variabler af typen byte. Det giver derfor nogle begrænsninger for hvilke regnestykker man kan lave. Dividerer man fx 6 med 4 får man som bekendt 1,5, men i JAL vil facit i stedet blive rundet ned til 1. Man skal derfor være opmærksom på, hvilke værdier man regner med.