Skip to content

Commit

Permalink
Vezbe 3 konacno
Browse files Browse the repository at this point in the history
  • Loading branch information
anjaaivanovic committed Mar 6, 2024
1 parent bf40b9c commit 478e2b2
Showing 1 changed file with 51 additions and 6 deletions.
57 changes: 51 additions & 6 deletions vezbe/03.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,11 @@
- [Maskiranje bita](#maskiranje-bita)
- [Uključivanje bita](#uključivanje-bita)
- [Isključivanje bita](#isključivanje-bita)
- [Vrednost pojedinačnog bita](#vrednost-pojedinačnog-bita) TO DO
- [Invertovanje vrednosti bita](#invertovanje-vrednosti-bita) TO DO
- [Vrednost pojedinačnog bita](#vrednost-pojedinačnog-bita)
- [Invertovanje vrednosti bita](#invertovanje-vrednosti-bita)
- [Zadavanje formata](#zadavanje-formata)
- [Sizeof()](#sizeof)
- [Const](#const)
- [Math.h](#mathh)


Expand Down Expand Up @@ -267,11 +268,42 @@ Upotrebom invertovane maske (i operatora bitovske konjunkcije), postižemo da sv

#### Vrednost pojedinačnog bita

TO DO
Očitavanje vrednosti bita na određenoj poziciji je najopštija od svih operacija koje se mogu izvoditi nad pojedinačnim bitovima. Tipično se sprovodi postupak kojim se traženi bit pomera na prvu poziciju, i potom se očitava vrednost prvog bita (ili, u praktičnom smislu - vrednost traženog bita).

Ako je potrebno očitati `4. bit` sa desne strane u promenljivoj `a`, prvo je potrebno dovesti četvrti bit promenljive a na prvu poziciju, preko operatora `>>`:

| a | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
|---|---|---|---|---|---|---|---|---|
| **p** | | | | | | | | 4 |
| **x = a >> (p - 1)** | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |

Zatim, uz korišćenje bitovskog operatora konjunkcije (&), rezultat se svodi na 0 ili 1 (i pamti se preko dodatne promenljive).

| x | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
|---|---|---|---|---|---|---|---|---|
| **1** | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
| **r = x & 1** | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |

U C programskom jeziku, očitavanje vrednosti pojedinačnog bita rešeno je sledećom linijom: `r = a >> (p - 1) & 1;`

#### Invertovanje vrednosti bita

TO DO
Invertovanje vrednosti pojedinačnog bita je jedna od najjednostavnijih bitovskih operacija.
Iako deluje logično, invertovanje pojedinačnog bita ne može se rešiti koriščenjem operatora ~. Kako bismo izolovali pojedinačan bit, kreiraćemo masku, a potom vrednost invertovati korišćenjem operatora `^` (XOR).

| m | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
|---|---|---|---|---|---|---|---|---|
| **p** | | | | | | | | **4** |
| **m << (p - 1)** | 0 | 0 | 0 | 0 | **1** | 0 | 0 | 0 |

Generisanje maske `m`.

| a | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
|---|---|---|---|---|---|---|---|---|
| **m** | 0 | 0 | 0 | 0 | **1** | 0 | 0 | 0 |
| **a = a ^ m** | 0 | 0 | 0 | 1 | **0** | 1 | 0 | 1 |

Primenom operatora `XOR` (a = a ^ m) invertovaćemo odabrani bit.

## Zadavanje formata

Expand Down Expand Up @@ -358,6 +390,20 @@ Deljenjem ukupne veličine niza veličinom tipa elemenata niza dobijamo broj ele

Pored toga, veoma je važan za `dinamičku alokaciju memorije`, o čemu će biti reči u narednim terminima.

## Const

Kvalifikator `const` se koristi pri deklaraciji varijable kako bi se naglasilo da se vrednost te promenljive neće menjati (da je konstanta). Konstanta jednom dobija svoju vrednost i više se ne može menjati.

```
int main()
{
const int var = 100;
var += 10; //javlja se greška pri kompajliranju (read-only variable)
return 0;
}
```

## Math.h

Math.h je matematička biblioteka u C programskom jeziku. Kako bismo mogli da je koristimo, potrebno je da je uključimo u kod pomoću `#include <math.h>`.
Expand All @@ -372,5 +418,4 @@ Neke od osnovnih funkcija ove biblioteke su:
- `cos(x)` - izračunava kosinus broja x
- ...


[aa](https://en.cppreference.com/w/c/language/operator_precedence)
Kompajliranje sa ovom bibliotekom vrši se komadom `gcc -o izv primer.c -lm`.

0 comments on commit 478e2b2

Please sign in to comment.