Informatika / … o číslech (čísla typu integer - celá čísla) KIT.PEF.CZU
Celá čísla – un/signed integer unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Celá čísla – un/signed integer ve dvojkové soustavě jsou celá čísla vyjádřena mocninnou řadou se základem 2 k dispozici jsou tedy pouze znaky 0 a 1 n-bitový obrazec poskytuje 2n různých kombinací ty lze využít např. k zobrazení čísel { 0,1, …(2n -1) } unsigned integer - neznaménkový tvar celého čísla nebo např. { (-2n-1) , …, -1, 0, 1, …, (2n-1-2) , (2n-1-1) } signed integer - znaménková reprezentace celého čísla
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 + 1 Předpokládejme, že pro uložení celého čísla vymezíme paměťový prostor o velikosti 4 bity 0001
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 Předpokládejme, že pro uložení celého čísla vymezíme paměťový prostor o velikosti 4 bity 0001 + 1 0010 4-bitový obrazec poskytuje 24 = 16 různých kombinací Sečtením dvou jedniček odpovídajících stejnému řádu (stejné mocnině dvou) dojde k přenosu do vyššího řádu
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 Předpokládejme, že pro uložení celého čísla vymezíme paměťový prostor o velikosti 4 bity 0001 0010 + 1 0011 4-bitový obrazec poskytuje 24 = 16 různých kombinací Sečtením dvou jedniček odpovídajících stejnému řádu (stejné mocnině dvou) dojde k přenosu do vyššího řádu
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 Předpokládejme, že pro uložení celého čísla vymezíme paměťový prostor o velikosti 4 bity 0001 0010 0011 + 1 0100 4-bitový obrazec poskytuje 24 = 16 různých kombinací Sečtením dvou jedniček odpovídajících stejnému řádu (stejné mocnině dvou) dojde k přenosu do vyššího řádu
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 Předpokládejme, že pro uložení celého čísla vymezíme paměťový prostor o velikosti 4 bity 0001 0010 0011 0100 + 1 4-bitový obrazec poskytuje 24 = 16 různých kombinací 0101 Sečtením dvou jedniček odpovídajících stejnému řádu (stejné mocnině dvou) dojde k přenosu do vyššího řádu
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 Předpokládejme, že pro uložení celého čísla vymezíme paměťový prostor o velikosti 4 bity 0001 0010 0011 0100 0101 4-bitový obrazec poskytuje 24 = 16 různých kombinací + 1 0110 Sečtením dvou jedniček odpovídajících stejnému řádu (stejné mocnině dvou) dojde k přenosu do vyššího řádu Přenos může způsobit, že součet není v daném počtu bitů zobrazitelný
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 Předpokládejme, že pro uložení celého čísla vymezíme paměťový prostor o velikosti 4 bity 0001 0010 0011 0100 0101 4-bitový obrazec poskytuje 24 = 16 různých kombinací 0110 0111 1000 Sečtením dvou jedniček odpovídajících stejnému řádu (stejné mocnině dvou) dojde k přenosu do vyššího řádu 1001 1010 1011 1100 Přenos může způsobit, že součet není v daném počtu bitů zobrazitelný 1101 1110 1111 V takovém případě hovoříme o přetečení 1 0000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 1 0000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 1 0000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 1 0000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 1 0000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 1 0000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 0001 0011 0010 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 1 0000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 0001 0010 0100 0101 0011 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 1 0000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 0001 0010 0101 0011 0110 0111 1000 0100 1001 1010 1011 1100 1101 1110 1111 1 0000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 0001 0010 0011 0110 0111 1000 0100 1001 1010 0101 1011 1100 1101 1110 1111 1 0000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 0001 0010 0011 0111 1000 0100 1001 1010 0101 1011 1100 1101 0110 1110 1111 1 0000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 0001 0010 0011 1000 0100 1001 1010 0101 1011 1100 1101 0110 1110 1111 0111 1 0000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 0001 0010 0011 0100 1001 1010 0101 1011 1100 1101 0110 1110 1111 0111 1 0000 1000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 0001 0010 0011 0100 1010 0101 1011 1100 1101 0110 1110 1111 1001 0111 1 0000 1000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 0001 0010 0011 0100 0101 1011 1100 1101 1010 0110 1110 1111 1001 0111 1 0000 1000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 0001 0010 0011 0100 1011 0101 1100 1101 1010 0110 1110 1111 1001 0111 1 0000 1000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 0001 0010 0011 1100 0100 1011 0101 1101 1010 0110 1110 1111 1001 0111 1 0000 1000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 0001 0010 1101 0011 1100 0100 1011 0101 1010 0110 1110 1111 1001 0111 1 0000 1000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 0001 1110 0010 1101 0011 1100 0100 1011 0101 1010 0110 1111 1001 0111 1 0000 1000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 1111 0001 1110 0010 1101 0011 1100 0100 1011 0101 1010 0110 1001 0111 1 0000 1000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 1 0000 0001 1 přetečení 1111 0001 0010 1 1110 0010 0011 1 1101 0011 1100 0100 1011 0101 1010 0110 1001 0111 1000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i signed – horní bit signalizuje znaménko Integer – čtyřbitový model 0000 10 0000 1 0001 10 0000 0001 1 přetečení 1111 0001 0010 10 0010 1 1110 0010 0011 1 1101 0011 1100 0100 1011 0101 … atd. stále dokola 1010 0110 1001 0111 1000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i Integer – čtyřbitový model 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 1 0000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i Integer – čtyřbitový model 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0000 1111 15 0001 1 1100 12 1101 13 11 1011 1110 14 1010 10 1001 9 0010 2 1000 8 0011 3 0100 4 0101 5 0111 7 0110 6 1 0000
Integer – čtyřbitový model unsigned – všechny bity mají význam 2i Integer – čtyřbitový model 0000 1 0000 přetečení nechceme (výsledek chceme znát jednoznačně) 1111 0001 15 1 1110 0010 14 2 1101 3 0011 13 1100 12 4 0100 11 5 1011 0101 10 6 9 7 1010 0110 8 1001 0111 1000
Unsigned Integer přetečení nechceme (výsledek chceme znát jednoznačně) unsigned – všechny bity mají význam 2i Unsigned Integer 0000 přetečení nechceme (výsledek chceme znát jednoznačně) 1111 0001 15 1 1110 0010 14 2 1101 3 0011 13 1100 12 4 0100 Dostáváme se do situace, kdy bitový obrazec značí čísla 0 až 2n-1 11 5 1011 0101 10 6 9 7 1010 0110 8 1001 0111 1000
Integer – čtyřbitový model signed – horní bit signalizuje znaménko Integer – čtyřbitový model můžeme však chtít počítat i se zápornými čísly 0000 0001 1 1111 -1 1100 -4 0100 4 0011 3 1101 -3 1011 -5 0101 5 1110 -2 1010 -6 0110 6 0111 7 1001 -7 1000 0010 2 I zde chceme jednoznačný výsledek. Proto musíme kolizi mezi kladnými a zápornými čísly zabránit
Integer – čtyřbitový model signed – horní bit signalizuje znaménko Integer – čtyřbitový model můžeme však chtít počítat i se zápornými čísly 0000 0001 1 1111 -1 1100 -4 0100 4 0011 3 1101 -3 1011 -5 0101 5 1110 -2 1010 -6 0110 6 0111 7 1001 -7 0010 2 -8 Pro největší záporné číslo vznikne potíž: neexistuje k němu opačné číslo 1000
Signed Integer můžeme však chtít počítat i se zápornými čísly signed – horní bit signalizuje znaménko Signed Integer můžeme však chtít počítat i se zápornými čísly 0000 1111 0001 -1 1 1110 0010 -2 2 1101 -3 3 0011 Nyní můžeme chápat bitové obrazce např. jako čísla -8 až +7 tedy -23 až 23-1, -2(n-1) až 2(n-1)-1 1100 -4 4 0100 -5 5 1011 0101 -6 6 -7 7 1010 0110 -8 1001 0111 1000
Signed Integer Unsigned Integer signed – horní bit signalizuje znaménko unsigned – všechny bity mají význam 2i Signed Integer Unsigned Integer 0111 1001 1000 1010 0110 1011 0101 1100 0100 0011 1101 1110 1111 0010 0001 0000 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 7 -7 -6 6 -5 5 -4 4 3 -3 -2 -1 2 1 -8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 stejné kombinace mohou mít různý význam
dotazy?