7. praktikum - Bitt-tehted (itv0020)
Allikas: Lambda
Selles praktikumis püüame salvestada infot hästi kompaktselt
Sisukord
Ülesanne
Eesmärgiks on kirjutada kaks programmi: ask ja show.
Ask
- Programm küsib kasutajalt 8 küsimust, mida on võimalik vastata "jah/ei".
- Seejärel salvestab vastused ühebaidilisse faili.
Show
- Programm näitab programmi ask poolt faili salvestatud vastused ekraanile.
Vihjeid
- Küsimuste stringid on mõttekas salvestada eraldi .h failis ja kaasata #include abil.
- Vastuste salvestamisel peaks kasutama bitimaski või bitinihet.
- Kasutage bithaaval toimuvate (bitwise) tehetes kasutatavates andmetüüpides unsigned võtmesõna. (Miks see oluline on?)
- Ühebaidiste andmete väljakirjutamiseks ja lugemisest saate kasutada fputc() ja fgetc() funktsiooni
- Reapuhvri tõttu on vastus "y" tegelikult "y" ja reavahetus, arvestage.
- Vastuseid hoidva faili sisu vaatamiseks on võib-olla abi programmist hexdump
- Binaarmaskide väljamõtlemisel ei pea te baidi 256 väärtust pähe õppima. Piisab nendest 16st:
0 - 0000 1 - 0001 2 - 0010 3 - 0011 4 - 0100 5 - 0101 6 - 0110 7 - 0111 8 - 1000 9 - 1001 a - 1010 b - 1011 c - 1100 d - 1101 e - 1110 f - 1111
Selle tabeli kasutamisel on võimalik mõista et kui hexdump ütleb, et baidi väärtus on F5, järeldub sellest et baidi sisuks on 11110101 . Lihtne!
Väljakutse
Väljakutse korral võite proovida sama programmi implementeerida teisiti: kasutades bit-fields nimelist bitivälja struktuuris. (Loeng 7 algus)
struct test { unsigned int esimene:1; unsigned int teine:1; };