TapHome

Operatory

Operatory języka skryptowego TapHome: arytmetyczne, porównania, bitowe i logiczne, ich 10 poziomów priorytetu, pułapka a & 1 > 0, skrócone obliczanie i odpowiedniki w Excelu.

Lista operatorów

Język skryptowy ma operatory arytmetyczne, porównania, bitowe i logiczne:

GrupaOperatoryPrzykład
Jednoargumentowe- (negacja), +, ! (logiczne NOT)!IsRaining
Multiplikatywne*, /(20.5 + 9.5) / 2 daje 15
Addytywne+, -"T=" + Te łączy tekst
Przesunięcia<<, >>8 << 2 daje 32
Relacyjne<, <=, >, >=Te > 25
Równości= (równe), <> lub != (różne)Mode <> 2
Bitowe AND&3 & 1 daje 1
Bitowe OR, XOR|, ^2 | 1 daje 3
LogiczneAND, XOR, ORTe > 25 AND Hu > 60
Przypisania:= i formy złożone +=, -=, *=, /=, <<=, >>=, &=, |=, ^=x += 1

XOR na dwóch liczbach to bitowy XOR: 5 XOR 1 daje 4. Na TRUE i FALSE to logiczny XOR.

Język nie ma NOT, ==, %, **, && ani ||. Użyj !, =, MOD, POWER, AND i OR. 1 == 1 kończy się błędem Wrong number of literals and operators in expression, NOT x błędem Unknown variable or constant 'NOT'.

Priorytet

Operatory są obliczane w tej kolejności, od najwyższego priorytetu do najniższego. Operatory tego samego poziomu są obliczane od lewej do prawej; nawiasy ( ) zmieniają kolejność.

  1. * /
  2. + -
  3. << >>
  4. < <= > >=
  5. = <> !=
  6. &
  7. | ^
  8. AND
  9. XOR
  10. OR

Inaczej niż w C czy JavaScripcie operatory bitowe wiążą silniej niż AND i OR, ale słabiej niż porównania. a & 1 > 0 oznacza a & (1 > 0). Zawsze pisz (a & 1) > 0.

VAR flags := 2;
flags & 2 > 0;
# Result: 0, read as flags & (2 > 0), which is flags & 1
(flags & 2) > 0;
# Result: TRUE

Przypisanie złożone ma priorytet swojej operacji: x -= a - b jest obliczane jako (x -= a) - b, a x *= 1 + 2 jako (x *= 1) + 2. Prawą stronę ujmij w nawiasy:

VAR total := 10;
total -= (a - b);

Skrócone obliczanie

AND i OR obliczają prawą stronę tylko wtedy, gdy lewa strona jeszcze nie przesądza o wyniku. XOR zawsze oblicza obie strony. Warunek może więc chronić wyrażenie obok siebie:

va2 <> 0 AND va1 / va2 > 1;
# Result: FALSE when va2 is 0, without the Division by zero error

Prawa strona nie jest obliczana, gdy va2 jest 0. Taką samą ochronę dla wartości daje IF, które oblicza tylko wybraną gałąź.

Odpowiedniki w Excelu

Operatory bitowe odpowiadają tym funkcjom w Excelu i Arkuszach Google:

TapHomeExcel, Arkusze GooglePrzykład
a & bBITAND(a, b)3 & 1 daje 1
a | bBITOR(a, b)2 | 1 daje 3
a ^ bBITXOR(a, b)6 ^ 3 daje 5
a << nBITLSHIFT(a, n)8 << 2 daje 32
a >> nBITRSHIFT(a, n)32 >> 2 daje 8

W Excelu ^ oznacza potęgę; w TapHome to bitowy XOR. Do potęg użyj POWER. IF, AND, OR i MOD mają w obu to samo znaczenie, ale w TapHome AND i OR są operatorami stawianymi między operandami.

Zobacz przykład operacji bitowych w Arkuszach Google: https://docs.google.com/spreadsheets/d/1hF5FMpGMJbgYh-YLwWrq2n186_ATyGyLUb689__IhLY/edit?usp=sharing albo wypróbuj interaktywne narzędzie http://bitwisecmd.com/. Funkcje odczytujące i zapisujące pojedyncze bity i bajty są na stronie Operacje bitowe.