Data Dvojková (binární) číselná soustava Standardní jednoduché datové typy s pevnou řádovou čárkou Standardní jednoduché datové typy s pohyblivou řádovou čárkou Příklady strukturovaných datových typů
Poziční číselné soustavy s celočíselným základem Dvojková soustava Poziční číselné soustavy s celočíselným základem Binární číselná soustava, bit Převody mezi číselnými soustavami Hexadecimální číselná soustava
Převod dekadicky vyjádřené celé části čísla do binární soustavy 132 = … + a4.24 + a3.23 + a2.22 + a1.21 + a0.20 |:2 66.0 = … + a4.23 + a3.22 + a2.21 + a1.20 + a0.2-1 0 = a0.2-1 a0 = 0 66 = … + a4.23 + a3.22 + a2.21 + a1.20 66 = … + a4.23 + a3.22 + a2.21 + a1.20 |:2 33.0 = … + a4.22 + a3.21 + a2.20 + a1.2-1 0 = a1.2-1 a1 = 0 33 = … + a4.22 + a3.21 + a2.20 33 = … + a4.22 + a3.21 + a2.20 |:2 16.5 = … + a4.21 + a3.20 + a2.2-1 0.5 = a2.2-1 a2 = 1 16 = … a4.21 + a3.20
Dekadická, binární a hexadecimální vyjádření číslených hodnot F. Bin. Hex. 00000000 00 1 00000001 01 2 10 00000010 02 3 11 00000011 03 4 100 00000100 04 5 101 00000101 05 6 110 00000110 06 7 111 00000111 07 8 1000 00001000 08 9 1001 00001001 09 1010 00001010 0A 1011 00001011 0B 12 1100 00001100 0C 13 1101 00001101 0D 14 1110 00001110 0E 15 1111 00001111 0F 16 10000 00010000 Dec. Bin. F. Bin. Hex. 17 10001 00010001 11 18 10010 00010010 12 19 10011 00010011 13 20 10100 00010100 14 21 10101 00010101 15 22 10110 00010110 16 23 10111 00010111 24 11000 00011000 25 11001 00011001 26 11010 00011010 1A 27 11011 00011011 1B 28 11100 00011100 1C 29 11101 00011101 1D 30 11110 00011110 1E 31 11111 00011111 1F 32 100000 00100000 33 100001 00100001
Převod dekadicky vyjádřené celé části čísla do binární soustavy Schématicky : 132 : 2 = 66 : 2 = 33 : 2 = 16 : 2 = 8 : 2 = 4 : 2 = 2 : 2 = 1 : 2 = 0 zb.0 zb.0 zb.1 zb.0 zb.0 zb.0 zb.0 zb.1 10000100
Převod dekadicky vyjádřené celé části čísla do binární soustavy V dekadické soustavě: N = [ log10 X ] V binární soustavě: N = [ log2 X ] V hexadecimální soustavě: N = [ log16X ] Čísla dělitelná 2 a0 = 0 Čísla dělitelná 4 a1, a0 = 0 Čísla dělitelná 8 a2, a1, a0 = 0 A … a10 a9 a8 a7 a6 a5 a4 a3 | a2 a1 a0 b7 b6 b5 b4 b3 b2 b1 b0 c2 c1 c0 B = A div 23 C = A mod 23
Kódování záporných čísel Prostým vyhrazením jednoho bitu pro znaménko, další bity zůstávají pro binární váhový kód absolutní hodnoty (např. mantisa u typů s pohyblivou řádovou čárkou) Přičtením konstanty (např. exponent u typů s pohyblivou řádovou čárkou) Pomocí tzv. dvojkového doplňku (např. hodnota u typů ShortInt, Integer, LongInt)
Kódování záporných čísel pomocí dvojkového doplňku Kladná čísla se kódují binárním váhovým kódem, znaménko = 0 Záporná čísla se kódují dvojkovým doplňkem, znaménko = 1 Doplňkem se rozumí rozdíl kapacity soustavy, tj. 2n (128, 32768, …), a absolutní hodnoty kódovaného čísla Výpočet doplňku lze provést v libovolné soustavě Mechanické výpočty dvojkového doplňku v binární soustavě: 1. Všechny bity negovat a binárně přičíst 1 2. Zprava opsat všechny “0“ až k první “1” (včetně), další bity negovat
Převod dekadicky vyjádřené necelé části čísla do binární soustavy 0.22 = a-1.2-1 + a-2.2-2 + a-3.2-3 + a-4.2-4 + a-5.2-5 + … |.2 0.44 = a-1.20 + a-2.2-1 + a-3.2-2 + a-4.2-3 + a-5.2-4 + … 0 = a-1.20 a-1 = 0 0.44 = a-2.2-1 + a-3.2-2 + a-4.2-3 + a-5.2-4 + … 0.44 = a-2.2-1 + a-3.2-2 + a-4.2-3 + a-5.2-4 + … |.2 0.88 = a-2.20 + a-3.2-1 + a-4.2-2 + a-5.2-3 + … 0 = a-2.20 a-2 = 0 0.88 = a-3.2-1 + a-4.2-2 + a-5.2-3 + a-6.2-4 + … 0.88 = a-3.2-1 + a-4.2-2 + a-5.2-3 + a-6.2-4 + … |.2 1.76 = a-3.20 + a-4.2-1 + a-5.2-2 + a-6.2-3 + … 1 = a-3.20 a-3 = 1 0.76 = a-4.2-1 + a-5.2-2 + a-6.2-3 + a-7.2-4 + …
Převod dekadicky vyjádřené necelé části čísla do binární soustavy 0.22 * 2 = 0.44 * 2 = 0.88 * 2 = 1.76 -1 = 0.76 * 2 = 1.52 -1 = 0.52 * 2 = 1.04 -1 = 0.04 * 2 = 0.08 Rozvoj necelé části - ukončený - nekonečný - periodický - neperiodický Příliš dlouhé rozvoje je třeba zkrátit, dochází tak k chybě vzniklé zaokrouhlením Pro kvantitativní vyjádření vlastnosti systému generovat chybu zavedeno tzv. „ machine e “. Prakticky je vhodné jej hledat jako největší číslo, pro které v daném systému platí: 1.0 + e = 1.0