Rezultatele operațiilor de biți
Orice date stocate în memoria calculatorului sunt cunoscute pentru a reprezenta o secvență de biți, i. E. succesiune de zerouri și altele. De exemplu, orice număr de tip int va ocupa 2 octeți în memorie, adică 16 biți. Acesta poate fi văzut în două moduri: fie ca un număr întreg (acesta este cazul operațiilor *, /, +, -.%), Fie ca o secvență de biți, ceea ce este posibil cu operațiunile de biți.
Operațiile binare sunt efectuate independent pe fiecare bit de date. Dacă operația este în două poziții, atunci se face pe biții corespunzători ai operanților.
În C, sunt disponibile următoarele operații de biți:
bit negation (singur),
bitwise "și" (două locuri),
^ bitwise "exclusiv sau" (binar),
| | bitwise "sau" (două locuri).
Rezultatul acestor operații definește un tabel de valori pentru toate combinațiile posibile de biți de doi operanzi.
Primul exemplu arată cum, cu ajutorul lui | puteți seta biți de operand selectați la unul:
char a, b; / * 00011010 = 26 * /
b = a | 26 / * b = 31 * / / b = 00011011 = 31 * /
Următorul exemplu arată cum, cu ajutorul operației puteți să eliminați octetul de ordin înalt:
char a, b; / * a = 00101101 = 45 * /
a = 45; / * 00001111 * /
/ * b = 00001101 = 13 * /
Operațiunile cu biți includ operațiuni de schimbare <<и>>:
o <
a >> b deplasează biții unui a spre dreapta prin pozițiile b.
a = 26; / * a = 00011010 = 26 * /
b = a <<2; /* b = 01101000 = 104 */
Trecerea la stânga este echivalentă cu multiplicarea cu 2 la gradul corespunzător. Treceți spre dreapta - împărțind cu 2 la gradul corespunzător.
Toate operațiile de biți sunt efectuate de la stânga la dreapta. Următoarea linie prezintă operațiile de biți în ordinea descrescătoare a priorității lor.
Pentru operațiile pe două biți se definesc operațiile de alocare suplimentare:
o <<= b; эквивалентно a = a <
a >> = b; este echivalent cu a = a >> b,
o = b; este echivalent cu a = a b,
a ^ = b; este echivalent cu a = a ^ b,
a | = b; este echivalent cu a = a | b.
Acestea sunt operații în două locuri, concepute să compare operanzii. În limba C, există șase operațiuni de relaționare:
> = mai mare sau egal cu,
<= меньше или равно,
Efectul funcționării relației este de a compara primul și al doilea operand. Dacă operanzii nu satisfac condiția relației, atunci rezultatul operației este zero, adică condiția este falsă. Dacă operanzii satisfac condiția de relație, atunci rezultatul relației nu este zero, adică condiția este adevărată.
b = (a + 5 <= 4 ); /* b = 0 */
Din cele de mai sus rezultă că nu există niciun tip de date logice speciale în limba C. Acesta înlocuiește întregul tip, iar conceptul logic "fals" corespunde valorii 0 și conceptului logic de "adevăr" - orice număr întreg diferit de zero.
Relațiile se fac de la stânga la dreapta. Cu o înțelegere fuzzy a acțiunilor lor, este în general posibil să se obțină un rezultat incorect. De exemplu, din punctul de vedere al sintaxei lui C, expresia a Pentru ca această expresie să fie semnificativă din punct de vedere matematic, ea trebuie împărțită în două părți a Articole similare