www.amapro.cz & David Bazala [Programování]

Otevře webové stránky AmaPro


Otevře hlavní stránku společnosti AmaPro
Internetové stránky určené pro studenty středních a vysokých odborných škol.


amapro.cz/odkazy Projekt eliminuje vyhledávání klíčových slov na komerčních stránkách a v e-schopech.



Nový projekt AmaPro

 

unsigned

 

Příkaz unsigned je standardní příkaz Céčka, který funguje jako typové doplnění kvalifikace proměnné. Je analogií příkazu signed, který je ovšem implicitní pro všechny datové typy. Pokud chceme unsigned typ proměnné využít, musíme příkaz unsigned zadat!. Unsigned říká překladači, že proměnná bude kladné číslo.

 

Obecná syntaxe unsigned:

 

unsigned int A;            

unsigned long B;                  

unsigned char C;

 

Specifika syntaxe unsigned:

 

unsigned int A je jako unsigned A;

unsigned long int B je jako unsigned long B

 

Překladače povolují určitá specifika pro zkrácení syntaxe. Implicitně jsou zkrácené pro datový typ int.

 

Při specifikaci proměnné na typ unsigned přistupuje procesor k obsahu a interpretaci hodnoty zcela jinak než u typu signed. Ačkoliv se vždy alokuje stejný počet bajtů, nepoužívá se u unsigned žádného bitu pro určení znaménka hodnoty. Lze tedy interpretovat hodnoty:

 

00000000 Bin                     00 Hex                   0 Dec

11111111 Bin                     FF Hex                   256 Dec

 

pro jednu paměťovou buňku (1 Byte)

 

Při tendencích překračování povolených hodnot procesor nehlásí chybu, ale nevědomky pro programátora, (procesor má praporek) dochází k tzv. přetékání a podtékání. Jedná se jednoduše o to,  že po dosažení maximální hodnoty se přechází k čítání od hodnoty minimální (pro unsigned od 0).

 

 

PŘÍKLAD: unsigned_1

unsigned char znak;                                           //alokace 1 Byte jako BEZZNAMÉNKOVÝ char

for(znak=0; znak<=250;znak++)        //cyklus od 0 do 250

    cout<<znak<<(int)znak<<endl;                    //výpis znak jako char a hodnota int

cout<<"znak="<<(int)znak<<endl;                  // znak=251

znak++;                                                                // 252 jako 11111100 bin

znak++;                                                                // 253 jako 11111101 bin

znak++;                                                                // 254 jako 11111110 bin

znak++;                                                                // 255 jako 11111111 bin <- dojde k přetečení

znak++;                                                                // 0   jako 00000000 bin

znak++;                                                                // 1   jako 0000000a bin

cout<<"znak="<<(int)znak;                              // znak=1

getchar();                                                             //čákání na entr

return 0;                                                               //výstup z konzolové aplikace

 

Příklad demonstruje způsob přetečení obsahu 1Byte pro typovou proměnnou unsigned char. Deklarací proměnné unsigned char znak dochází k alokaci 1 Byte jako v případě signed char (jen char). Přístup k této proměnné je ale jiný. Jedná se o celočíselný kladný datový typ, který pomocí for čítáme od 0 250 a vypisujeme pomocí cout jako znak a odpovídající číslo přetypované na int. Následně zvyšujeme hodnotu znak o jednu a sledujeme pomocí cout. Při hodnotě 225 a instrukci znak++ nebude výsledek 256, ale opět 0. Následně 1. To je důkaz, že unsigned char pracuje s hodnotami od 0 do 255 a pak přetéká na 0.

 

 

PŘÍKLAD: unsigned_2

unsigned int cislo;

cout<<"alokuje="<<sizeof(cislo)<<endl;       //informční výpis o počtu alokovaných Byte

cislo=4294967294;                                              //inicializuje cislo na FF FF FF FE Hex

cislo++;                                                //přičítá hodnotu int o jedna

cout<<cislo<<endl;                                            //dosahuje MAXIMA=4294967295 jako FF FF FF FF Hex

cislo++;                                                //přičítá hodnotu int o jedna PŘETÍKÁ

cout<<cislo<<endl;                                            //dosahuje MAXIMA=0 jako 00 00 00 00 Hex

cislo++;                                                //přičítá hodnotu int o jedna

cout<<cislo<<endl;                                            //vypisuje 1 jako 00 00 00 01 Hex

getchar();                                                             //čekání na entr

return 0;                                                //výstup z konzolové aplikace

 

Příklad demonstruje způsob přetečení obsahu 4 Byte pro typovou proměnnou unsigned int. Deklarací proměnné unsigned int cislo dochází k alokaci 4 Byte jako v případě signed int (jen int). Přístup k této proměnné je ale jiný. Jedná se o celočíselný kladný datový typ, který inicializujeme na hodnotu 4294967294, čítáme a vypisujeme pomocí cout jako int. Následně zvyšujeme hodnotu cislo o jednu a sledujeme pomocí cout. Při hodnotě 4294967295 a instrukci znak++ nebude výsledek 4294967296, ale opět 0. Následně 1. To je důkaz, že unsigned int pracuje s hodnotami od 0 do 4294967295 a pak přetéká na 0.

 

 



Abecední seznam všech článků Vyhledání pojmů ve článcích




Objektové programování c++
Jazyk C, Objektové programování c++
internet/katalog_programovani_c
Databáze ikon
Ikony a malé obrázky pro tlačítka či jiné použití
datove_zdroje/icony/icony.php
Mikropočítače
Seznámení s obecnou problematikou počítačů a mikropočítačů.
programovani/mikropocitace
Mikropočítače a jejich programování
Nízká forma programování, assembler a struktura procesorů.
knihy/mikropocitace/obsah_mikro1.php
Řetězce PHP
Informace o chování řetězců v programování PHP.
php/obsah_php_string.php
Hybridní počítače
Počítače, jejichž základem je standardní analogová počítací síť.
knihy/hybridni_pocitace
PHP práce s poli
Práce s poli a položkamy v PHP.
stranky/php_array
CSS html vlasnosti
Přehled CSS vlastností pro tvorbu webu
datove_zdroje/stranky/css
Zapojení kabelů
Popis vývodů a křížení různých propojovacích kabelů
konektory.php
Otevře stránky Fulltextové vyhledávání na celém serveru
Digitalizované odborné knihy
Velká encyklopedie pojmů a zkratek
Česko - anglicko - německý technický slovník
Klasický katalog firem, služeb a stránek
OnLine překladač  vět a textů (nepoužívá Google)
Stránky pro chvíle oddechu od studia, relaxace
Katalog českých firem dle technologií
Internetový odkazník
Otevře hlavní stranu pro oddíl programování




 Wikipedie   Seznam stránek   Kapitoly témat   Významné servery   Klíčová slova 








Otevře hlavní stranu společnosti AmaPro

Všechna práva vyhrazena. Určeno jen pro osobní využití. Bez předchozího písemného souhlasu správce www.amapro.cz je zakázána jakákoli další publikace, přetištění nebo distribuce jakéhokoli materiálu nebo části materiálu zveřejněného na www.amapro.cz a to včetně šíření prostřednictvím elektronické pošty. Články, jejichž přímým autorem není amapro.cz lze publikovat pouze se souhlasem jejich majitelů či administrátoru příslušného webu.