Union neboli sjednocení Bitová pole

Slides:



Advertisements
Podobné prezentace
Mgr. Irena Fadrhoncová.  Definice: právní norma je obecně závazné pravidlo chování, které je vyjádřeno zvláštní státem uznanou formou a jehož zachování.
Advertisements

2.1 Pevný disk Fyzická struktura  plotny  záznamový materiál  č/z hlavičky  prachotěsný obal  motorky otáčení ploten  plotny na jedné hřídely.
Experimentální metody v oboru – Aproximace 1/14 Aproximace Teze přednášek z předmětu „Technický experiment“ © Zdeněk Folta - verze
Komunikace Že si nerozumíme, je normální. Že si porozumíme, je zázrak. neznámý autor Dostupné z Metodického portálu ISSN: , financovaného.
  Pevný disk (HDD – Hard Disk Drive)  Používá se k dočasnému nebo trvalému uchovávání dat pomocí magnetické indukce.  Jeho předchůdci byli magnetická.
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
Hodnocení kvality výuky 2014 – 2015 LS Říjen 2015.
Operační program Vzdělávání pro konkurenceschopnost Název projektu: Inovace magisterského studijního programu Fakulty ekonomiky a managementu Registrační.
Inf Tabulkový procesor - funkce. Výukový materiál Číslo projektu: CZ.1.07/1.5.00/ Šablona: III/2 Inovace a zkvalitnění výuky prostřednictvím ICT.
Elektrotechnická měření Dimenzování sítí nn - PAVOUK 2.
Význam diferenciálních rovnic převzato od Doc. Rapanta.
Programování v jazyce C++ Dědičnost a polymorfismus.
1.3 Sběrnice (bus). sběrnice  sběrnice = skupina vodičů  slouží pro propojení a komunikaci jednotlivých obvodů a přídavných karet  činnost na sběrnicích.
Technologie počítačů 4. Sběrnice © Milan Keršlágerhttp:// Obsah: ● ISA, EISA, VL-BUS,
Jednotlivé osobnosti nejsou jedinečné jenom svými psychickými vlastnostmi, ale také tím, jak VNÍMAJÍ, jak PŘEMÝŠLEJÍ, UČÍ SE, PAMATUJÍ SI apod.
Základní škola a Mateřská škola, Liberec, Barvířská 38/6, příspěvková organizace Název : VY_32_inovace_07 Informatika - MS Excel – Vkládání vzorců Autor:
Řetězce v jazyce C ● řetězec je posloupnost znaků ● řetězcové konstanty se v C vkládají mezi uvozovky, např. "Ahoj Hugo!" ● v paměti je řetězec uložen.
Mnohočleny Gymnázium a Jazyková škola s právem státní jazykové zkoušky Zlín Tematická oblast Matematika – výrazy s proměnnými Datum vytvoření
Interaktivní tabule, USB disky, paměťové karty, záložní zdroj
Věcné autority v roce 2016
Digitální učební materiál zpracovaný v rámci projektu
Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/
Správa paměti - úvod Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Vklad Obchodní zákoník definuje vklad jako peněžní prostředky nebo jiné penězi ocenitelné hodnoty, které se společník zavazuje vložit do základního kapitálu.
Elektromotor a jeho využití
Obrázky Ram Rom Nástupci ROM Počítačová pamět Obrázky Paměti Ram rom
Přetěžování Datové typy.
Uživatelem definované datové typy
Financováno z ESF a státního rozpočtu ČR.
Programování v jazyce C++
Struktury.
Jednotné principy klasifikace na GJKT
Jedno-indexový model a určení podílů cenných papírů v portfoliu
ADT zásobník - příklad Prakticky aplikovatelný příklad využití ADT zásobník je vyhodnocování aritmetických výrazů v Postfixové notaci: Pro zápis aritmetických.
Výukový materiál zpracován v rámci projektu
Jednočipové počítače – aplikace I2C sběrnice
Orbis pictus 21. století Mikropočítač
Databáze MS ACCESS 2010.
Datové typy v jazyce C Datové typy void skalární aritmetické
Souběh Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Lexikální atomy jazyka C
Stránkování Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Přenosové soustavy Autor: Pszczółka Tomáš VY_32_INOVACE_pszczolka_
Překladače 6. Sémantická analýza
1. ročník oboru Mechanik opravář motorových vozidel
Kvadratické nerovnice
Logické funkce a obvody
jednočipových počítačů I
Stavební fakulta ČVUT, B407
BIBS Informatika pro ekonomy přednáška 2
Informatika pro ekonomy přednáška 8
Číslicové měřící přístroje
Programovatelné automaty (Programmable logic controllers – PLC)
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
Materiál byl vytvořen v rámci projektu
Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Základní škola Ústí nad Labem, Anežky České 702/17, příspěvková organizace   Číslo projektu: CZ.1.07/1.4.00/ Název projektu: „Učíme lépe a moderněji“
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o, Orlová Lutyně
Fronta (1) Dynamická datová struktura typu FIFO (First In First Out)
Lineární regrese.
Logické funkce a obvody
Datové typy v jazyce C Datové typy void skalární aritmetické
Union neboli sjednocení Bitová pole
Matematika – 7.ročník Mnohočleny VY_32_INOVACE_
K-mapa: úvod a sestavení
Algoritmizace a datové struktury (14ASD)
Algoritmizace a datové struktury (14ASD)
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Digitální učební materiál
Transkript prezentace:

Union neboli sjednocení Bitová pole

Struktura datový typ s heterogenními položkami pro každou položku je rezervováno místo v paměti typedef struct { int cislo; char zn; } TUkazkova; TUkazkova s;

nechť sizeof(int)=4 s.zn s.cislo s

Union (sjednocení) datový typ s heterogenními položkami místo v paměti je rezervováno pouze pro nejdelší položku položky se překrývají v daném okamžiku je platná pouze jedna položka union neposkytuje informaci, která položka byla použita

typedef union { int cislo; char zn; } TUksjedn; TUksjedn u;

nechť sizeof(int)=4 u.cislo u.zn u

uniony se příliš často nepoužívají důvody použití šetření paměti např. ve velkých polích variantní záznam chceme-li se na jeden datový typ „podívat“ několika způsoby, což je implementačně závislé a program pak nemusí být přenositelný

Variantní záznam musím deklarovat jako strukturu s položkami pevnými rozlišovací varianta, což je položka typu union

Příklad: nákladní a osobní auto typedef enum {OS, NAKL} TypA; typedef union { float nosnost; int pocet_osob; } Parametry; typedef struct { char SPZ[7]; /*spol. polozka */ TypA typ; /* rozhodovaci polozka */ Parametry param; } TAuto;

TAuto auta[10]; auto[0].typ = OS; auto[0].param.pocet_osob = 4; auto[1].typ = NAKL; auto[1].param.nosnost = 4; výraz auto[1].param.pocet_osob překladač akceptuje, ale je logicky nesprávný

položky sjednocení mohou být i struktury typedef struct {float f, float g} TDes; typedef struct {int i, int j} TCela; typedef union { TDes d; TCela c; } TOboje; TOboje o; o.c.i = 3; o.d.g = 4.55;

Příklad: předpokládáme opět velikost typu int 4 slabiky typedef union { int x; struct { unsigned char b0; unsigned char b1; unsigned char b2; unsigned char b3; } slabiky; } TKukatko;

TKukatko k; k.slabiky.b3 k.slabiky.b2 k.x k.slabiky.b1 k.slabiky.b0

na nultou slabiku se „podívám“: k.slabiky.b0; přiřazení hodnoty k x: k.x = 328; na nultou slabiku se „podívám“: k.slabiky.b0; ale pouze u procesorů Intel, protože nemám zaručeno, že položka b0 bude odpovídat slabice nižšího řádu u překladačů pro procesory s uložením big endian (např. Motorola) se takto „podívám“ naopak na slabiku nejvyššího řádu překladač může upravit hranice mezi položkami záleží na překladači a platformě (procesoru)

Bitová pole

Bitové pole struktura, jejíž velikost je omezena velikostí typu int (maximálně) minimální velikost jedné položky je 1 bit vhodné pro přístup pomocí k bitům pomocí identifikátorů používáme tam, kde chceme ušetřit paměť používané zejména u překladačů jazyka C pro jednočipové mikropočítače

Příklad: typedef struct { unsigned int den :5; /* bity 0 až 4 */ unsigned int mesic :4; /* bity 5 až 8 */ unsigned int rok :23; /* bity 9 až 31 */ } TDatum; TDatum datum; datum.den = 12;

Příklad: příznakový registr OPTION jednočipového mikropočítače PIC typedef struct { unsigned int PS0 :1; unsigned int PS1 :1; unsigned int PS2 :1; unsigned int PSA :1; unsigned int RTE :1; unsigned int RTS :1; } TOption;

TOption option at xxxx; deklaruji proměnnou na příslušnou adresu TOption option at xxxx; některé překladače pro jednočipové procesory mají direktivu např. at, @, která umožňuje mapovat proměnnou na konkrétní adresu do paměti k jednotlivým bitům přistupuji „normálně“, nemusím používat masku a logické operace if (option.PSA == 1)

pokud bych chtěl přistupovat k bitům PS jako ke trojici, resp pokud bych chtěl přistupovat k bitům PS jako ke trojici, resp. k celému registru, nadeklaruji sjednocení struktur typedef struct { unsigned int PS :3; unsigned int PSA :1; unsigned int RTE :1; unsigned int RTS :1; } TOption2; typedef union { TOption o1; TOption2 o2; unsigned char cely; } TOptionReg;

přístup k celému registru přístup k hodnotě PS přístup k bitu RTS TOptionReg registr at xxxx; přístup k celému registru registr.cely = 0x20; přístup k hodnotě PS registr.o2.PS = 0x03; přístup k bitu RTS registr.o2.RTS = 1; nebo registr.o1.RTS = 1;