Kurzusok
/
Scala
Scala
/
Feladatok
/
Változó hosszúságú mennyiség
Változó hosszúságú mennyiség

Változó hosszúságú mennyiség

Nehéz

Utasítások

Valósítsd meg a változó hosszúságú mennyiség kódolását és dekódolását.

A feladat célja a VLQ kódolás és dekódolás megvalósítása.

Röviden: ennek a kódolásnak a célja, hogy az egész számokat úgy kódolja, hogy azzal bájtokat takarítson meg. Minden bájtból csak az első 7 bit számít (jobbra igazítva; nagyjából úgy, mint egy ASCII-bájt esetében). Tehát ha van egy 32 bites értéked, fel kell bontanod egy sor 7 bites bájtra. Természetesen a bájtok száma attól függően változik, hogy mekkora az egész számod. Annak jelzéséhez, hogy melyik a sorozat utolsó bájtja, a 7. bitet nullán hagyod. Az összes megelőző bájtban a 7. bitet beállítod.

Tehát ha egy egész szám 0-127 között van, akkor egyetlen bájttal ábrázolható. Bár a VLQ tetszőleges méretű számokkal is boldogul, ebben a feladatban csak azokra a számokra szorítkozunk, amelyek elférnek egy 32 bites előjel nélküli egész számban. Íme néhány példa egész számokra 32 bites értékként, és a hozzájuk tartozó változó hosszúságú mennyiségekre:

 NUMBER        VARIABLE QUANTITY
00000000              00
00000040              40
0000007F              7F
00000080             81 00
00002000             C0 00
00003FFF             FF 7F
00004000           81 80 00
00100000           C0 80 00
001FFFFF           FF FF 7F
00200000          81 80 80 00
08000000          C0 80 80 00
0FFFFFFF          FF FF FF 7F

Kurzusra vonatkozó utasítások

Ne feledd, hogy Scalában a jobbra tolás operátorának két formája van. A >> operátor megőrzi az előjelet, a >>> viszont nullázza a bal szélső biteket.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Scala Exercism

Készen állsz elkezdeni a(z) Változó hosszúságú mennyiség feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Scala nyelvet 95 feladat segítségével, valódi emberi mentorálással, mindez ingyen.