Warning: Declaration of action_plugin_subjectindex_indexer::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php on line 15

Warning: Declaration of action_plugin_mathjax_enable::register(Doku_Event_Handler &$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/mathjax/action/enable.php on line 62

Warning: Declaration of action_plugin_googleanalytics::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/googleanalytics/action.php on line 40

Warning: Declaration of action_plugin_folded::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/folded/action.php on line 40

Warning: Declaration of action_plugin_hidden::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/hidden/action.php on line 28

Warning: Declaration of action_plugin_include::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/include/action.php on line 354

Warning: Declaration of action_plugin_tag::register(&$contr) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/tag/action.php on line 175

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/auth.php on line 532

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/auth.php on line 818

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/parser/handler.php on line 1376

Warning: Declaration of SI_EntryDefault::match($text) should be compatible with SI_Entry::match() in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/plugins/EntryDefault.php on line 68

Warning: Declaration of SI_EntryTag::match($text) should be compatible with SI_Entry::match() in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/plugins/EntryTag.php on line 42

Warning: Declaration of SI_EntryVerse::match($text) should be compatible with SI_Entry::match() in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/plugins/EntryVerse.php on line 1280

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4360 in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/parser/lexer.php on line 118
A PCRE internal error occured. This might be caused by a faulty plugin

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/actions.php on line 215
jazykc:bitove-operatory-a-bitova-pole [Bo.bule]

====== Bitové operátory a bitová pole ====== * [[dox>bitove-operatory-a-bitova-pole/datumy.c|Datumy]] * [[dox>bitove-operatory-a-bitova-pole/mnozinove-operace.c|Množinové_operace]] ======Bitové operátory====== Jedná se o souhrný název pro operátory, které pracují s jednotlivými bity hodnot svých operandů. V jazyku C máme k dispozici tyto bitové operátory: * bitový součin &, * bitový součet |, * bitovou nonekvivalenci (XOR) ^, * bitovou negaci (jedničkový doplněk) ~, * bitový posun vpravo >> a * bitový posun vlevo <<. Operandy těchto operátorů mohou být pouze celočíselné. Naopak velkou výhodou bitových operací je jejich výpočetní nenáročnost (operátory se vyhodnocují velmi rychle). Příklady: <code c> c = c & 0xDF; /* převod na velká písmena */ c |= 0x20; /* převod na malá písmena */ x = x << 3; /* násobení 3. mocninou čísla 2 */ x >>= 2; /* dělení 2. mocninou čísla 2 */ </code> ======Práce se skupinou bitů====== Bitové operátory se často používají při práci se skupinami bitů (více informací uložených v jedné proměnné). Pomocí definovaných bitových masek (např. konstanty READ, WRITE a DELETE v příkladu níže) pak můžeme relativně jednoduše a velmi rychle pracovat s více souvisejícími informacemi uloženými v jediné celočíselné proměnné. Příklad: <code c> #define READ 0x8 #define WRITE 0x10 #define DELETE 0x20 ... unsigned int status; status |= READ | WRITE | DELETE; status |= READ | WRITE; status &= ~(READ | WRITE | DELETE); status &= ~READ; </code> ======Bitová pole===== Bitová pole umožňují pracovat s jednotlivými bity nebo skupinami bitů proměnných pomocí symbolických jmen. Vytváříme je podobně jako strukturované datové typy, jednotlivé členy mohou být ovšem pouze "typu" unsigned (neznaménkové) nebo signed (znaménkové) a za každým členem uvádíme za dvojtečkou počer bitů, které budou pro tento člen vyhrazeny. Velikost celého bitového pole je pak omezena na maximálně sizeof(int) bytů. Příklad deklarace bitového pole: <code c> typedef struct { unsigned den : 5; unsigned mesic : 4; unsigned rok : 7; } DATUM; //Příklad vytvoření proměnné: DATUM dnes = {23, 4, 2008 - 1980}; DATUM zitra = dnes; //Příklady přístupu k položkám: zitra.den++; dnes.mesic = 6; dnes.rok = 2009 - 1980; if ((dnes.rok != d.rok) || (dnes.mesic != d.mesic) || (dnes.den != d.den)) {...} printf("%u. %u.%u\n", d.den, d.mesic, d.rok + 1980); </code> ---- cc,upol


Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/auth.php on line 818
jazykc/bitove-operatory-a-bitova-pole.txt · Last modified: 2015/01/15 20:47 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0