Zobrazenie čísiel v počítači Celé nezáporné čísla - čísla bez znamienka dvojková sústava iné používané sústavy - šestnástková a osmičková BCD kódovani

Podobné dokumenty
Vnútorná reprezentácia údajových typov

Úroveň strojového kódu procesor Intel Pentium Pamäťový operand Adresovanie pamäte Priama nepriama a indexovaná adresa Práca s jednorozmerným poľom Pra

Tue Oct 3 22:05:51 CEST Začiatky s jazykom C 2.1 Štruktúra programu Štruktúra programu by sa dala jednoducho popísať nasledovnými časťami, kto

Microsoft PowerPoint - Prog_p08.ppt

Úroveň strojového kódu procesor Intel Pentium Úvod Štruktúra procesorov Intel Pentium Základné inštrukcie Vetvenia a cykly Praktické programovanie jed

NÁVRH UČEBNÝCH OSNOV PRE 1

Katalóg cieľových požiadaviek k maturitnej skúške

Súkromné gymnázium, Česká 10, Bratislava INFORMATIKA

Organizácia počítačových systémov Procesory Vnútorná pamäť Vonkajšie pamäte Vstupné a výstupné zariadenia Autor: Peter Tomcsányi Niektoré práva vyhrad

Informačné technológie

gazdikova

ECDL Syllabus V50 SK-V01

Microsoft Word - 6 Výrazy a vzorce.doc

Snímka 1

Microsoft Word - zapis-predmetov-AiS

Hardwarové prerušenie Nasledujúci kód ukazuje inštaláciu obsluhy časovača vrátane jeho inicializácie // inicializace časovače, přerušení každou milise

Paralelné algoritmy, cast c. 2

Microsoft Word - 06b976f06a0Matice - Uzivatelska Dokumentacia

MATEMATICKÁ OLYMPIÁDA NA STREDNÝCH ŠKOLÁCH 54. ročník, školský rok 2004/2005 Zadania úloh 3. kola kategórie P 1. súťažný deň Na riešenie úloh máte 4.5

Pracovný postup pre vypĺňanie údajov elektronického formulára IŠIS pre spravodajskú jednotku 1

Microsoft Word - Príloha P2 - zadania pracovných listov pre 6. ročník

Stravné - přecenění

DediĊnosť

Metódy násobenie v stredoveku

2.5. Dotyčnica krivky, dotykový kužeľ. Nech f je krivka a nech P V (f) (t.j. m P (f) 1). Ak m P (f) = r a l je taká priamka, že I P (f, l) > r, potom

Microsoft Word - prirucka_katedry_nova

Identity Lifecycle Management

Úvod do lineárnej algebry Monika Molnárová Prednášky 2006

(ıkolské kolo-PYT)

Snímka 1

Agenda záverečnej práce pedagóg Celá agenda týkajúca sa záverečnej práce je dostupná v obrazovke Záverečná práca (menu Agenda pedagóga -> Záverečné pr

FAQ

Centrum vedecko-technických informácií, Odbor pre hodnotenie vedy, Oddelenie pre hodnotenie publikačnej činnosti Vyhľadávanie a práca so záznamami - C

Prezentace aplikace PowerPoint

enum

Priebeh funkcie

Republika Srbsko MINISTERSTVO OSVETY, VEDY A TECHNOLOGICKÉHO ROZVOJA ÚSTAV PRE HODNOTENIE KVALITY VZDELÁVANIA A VÝCHOVY VOJVODINSKÝ PEDAGOGICKÝ ÚSTAV

Čísla Nájdite všetky dvojice prirodzených čísiel, ktoré vyhovujú rovnici: 2 ( a+ b) ( a b) + 2b ( a+ 2b) 2b = 49 RIEŠENIE ( ) ( ) ( ) 2 a+ b a

VSDC Free Video Editor stručný návod na používanie Link na sťahovanie softvéru: K prog

8 Cvičenie 1.1 Dokážte, že pre ľubovoľné body X, Y, Z platí X + Y Z = Z + Y X. 1.2 Dokážte, že pre ľubovoľné body A, B, D, E, F, G afinného priestoru

Január 2012 (verzie ) Popis zmien v systéme PROLUC

Aktion.NEXT Novinky vo verzii 1.9

(Microsoft Word Zadanie na s\372\235a\236 KROS DESIGN AWARD .doc)

INTERNET BANKING Práca s tokenom VŠETKO, ČO JE MOŽNÉ with.vub.sk, Bank of

Algoritmizácia a programovanie - Príkazy

SRPkapitola06_v1.docx

IT NEWS

midterm2019

Riesenie_zasielkovna

iot business hub whitepaper isdd_em_New.pdf

Vzorové riešenia úlohy 4.1 Bodovanie Úvod do TI 2010 Dôvod prečo veľa z Vás malo málo bodov bolo to, že ste sa nepokúsili svoje tvrdenia dokázať, prič

Hranoly (11 hodín) September - 17 hodín Opakovanie - 8. ročník (6 hodín) Mesiac Matematika 9. ročník 5 hodín/týždeň 165 hodín/rok Tematický celok Poče

eKasa

Tabuľky_teoria

Stravné - přecenění

Multithreading a komunikácia medzi procesmi a threadmi, Časová závislosť, kritická sekcia a vzájomné vylúčenie, súvislosti medzi týmito pojmami Riešen

Dirichletov princíp 4. kapitola. Kódovanie In: Lev Bukovský (author); Igor Kluvánek (author): Dirichletov princíp. (Slovak). Praha: Mladá fronta, 1969

Poznámky k cvičeniu č. 2

gis5 prifuk

(Pom\371cka k p\370\355prav\354 v\375ukov\351 hodiny s podporou Classroom Managementu \(Matematika\))

Microsoft Word - skripta3b.doc

Import absencí z ASC

Pokročilé programovanie mikropočítačov v jazyku C. Diel č.2 Publikované: , Kategória: Mikroprocesory Skúmame ADCčko Ahoj

III. Diferenciálny počet funkcie viac premenných (Prezentácia k prednáškam, čast B) Matematická analýza IV (ÚMV/MAN2d/10) RNDr. Lenka Halčinová, PhD.

Preco kocka stací? - o tom, ako sú rozdelené vlastné hodnoty laplasiánu v limite, ked sú velké

eKasa

Microsoft Word - Diskusia11.doc

Autoregresné (AR) procesy Beáta Stehlíková Časové rady, FMFI UK Autoregresné(AR) procesy p.1/22

Úrad pre dohľad nad zdravotnou starostlivosťou Žellova 2, Bratislava Dátové rozhranie pre spracovanie lekárskych poukazov - očná optika Strana

Matej Kendera - PDF, word, lucene, java

Jadrova fyzika - Bc.

Teória pravdepodobnosti Zákony velkých císel

Externé mediálne karty Používateľská príručka

7011

Metódy dokazovanie v matematike 1 Základné pojmy Matematika exaktná veda vybudovaná DEDUKTÍVNE ZÁKLADNÉ POJMY základy každej matematickej teórie sú in

Microsoft Word - MAT_2018_1 kolo.docx

Informačný systém pre externú časť a písomnú formu internej časti maturitnej skúšky Informačný systém pre EČ a PFIČ maturitnej skúšky Užívateľská prír

Microsoft Word - Transparencies03.doc

Microsoft Word - Priloha_1.docx

Cvičenie 9 Riešené príklady 1. Príklad min f(x 1, x 2 ) = x x x 1 s.t. x 1 80 x 1 + x Pre riešenie úlohy vykonáme nasledujúce kroky

Didaktické testy

prijimacky 2014 MAT 4rocne ver A.doc

Pokrocilé programovanie XI - Diagonalizácia matíc

Madder Scientist Ako hrat v1.1

Podvojné účtovníctvo, fakturácia a sklad ekasa: štandardný predaj priamo z programu Pri predaji s priamym napojením na softvér je potrebné mať online

PS

Informačná a modelová podpora pre kvantifikáciu prvkov daňovej sústavy SR

60. ročník Fyzikálnej olympiády v školskom roku 2018/2019 kategória E okresné kolo Riešenie úloh 1. Zohrievanie vody, výhrevnosť paliva a) Fosílne pal

SK MATEMATICKÁOLYMPIÁDA skmo.sk 2009/ ročník MO Riešenia úloh česko-poľsko-slovenského stretnutia 1. Určte všetky trojice (a, b, c) kladných r

Ako vybrať hliníkové disky (elektróny)

Microsoft PowerPoint - OOP_prednaska_10.pptx

test z informatiky - hardvér Test vytvoril Stanislav Horváth Vstupno - výstupné zariadenia Otázka č.1: Aké zariadenie je na obrázku? (1 bod) a) vstupn

Digitálne technológie v každodennom živote 3. ročník akademický rok 2019/2020 Harmonogram prednášok

Ponuka Štart

Predmet didaktiky informatiky. Ciele a obsah školskej informatiky, osnovy, štandardy, maturita, učebnice ...

Microsoft Word - prechod_euro_prolca.doc

Prepis:

Zobrazenie čísiel v počítači Celé nezáporné čísla - čísla bez znamienka dvojková sústava iné používané sústavy - šestnástková a osmičková BCD kódovanie - Binary-Coded Decimal Všetky celé čísla - čísla so znamienkom priamy kód dvojkový doplnok kód posunutej nuly (kód "excess N") Reálne čísla (v skutočnosti podmnožina racionálnych čísiel) s pevnou čiarkou s pohyblivou čiarkou Celé a reálne čísla v Pythone a C Autor: Peter Tomcsányi, Niektoré práva vyhradené v zmysle licencie Creative Commons http://creativecommons.org/licenses/by-nc-sa/3.0/ Použité obrázky z učebnice: Andrew. S. Tanenbaum, Structured Computer Organization http://www.cs.vu.nl/~ast/books/ 1 / 25

Celé čísla bez znamienka Počítače pracujú v dvojkovej sústave Prevod z desiatkovej do dvojkovej sústavy: 91 : 2 = 45 zvyšok 1 45 : 2 = 22 zvyšok 1 22 : 2 = 11 zvyšok 0 11 : 2 = 5 zvyšok 1 5 : 2 = 2 zvyšok 1 2 : 2 = 1 zvyšok 0 1 : 2 = 0 zvyšok 1 Najnižší rád Najvyšší rád 91 10 =1011011 2 91=64+16+8+2+1 2 / 25

Šestnástková sústava 0 0 0000 1 1 0001 2 2 0010 3 3 0011 4 4 0100 5 5 0101 6 6 0110 7 7 0111 8 8 1000 9 9 1001 A 10 1010 B 11 1011 C 12 1100 D 13 1101 E 14 1110 F 15 1111 Ak počet cifier nie je deliteľný 4, tak ho zľava doplníme nulami. 01011011 5 B Prevod medzi dvojkovou a šestnástkovou sústavou je jednoduchý lebo pri ňom netreba deliť. Pri prevode z dvojkovej do šestnástkovej sústavy sa v čísle vytvoria skupiny po 4 cifrách (lebo 2 4 =16) a každá z nich sa prevedie na jednu cifru podľa tabuľky. Pri prevode zo šestnástkovej do dvojkovej sústavy sa každá šestnástková cifra vyjadrí štyrmi dvojkovými ciframi. 3 / 25

BCD - Binary-Coded Decimal 1395 každá cifra čísla zapísaného v desiatkovej sústave sa zvlášť prevedie do dvojkovej sústavy 0001 0011 1001 0101 Toto je číslo 1395 zakódované v BCD kóde do 16 bitov Používal sa v starších procesoroch Pre pomalšie počítače bol dobrým kompromisom dosť rýchleho prevodu z/do textového tvaru a rýchlosťou jednoduchých aritmetických výpočtov. 4 / 25

Binárne hodiny Úloha z Informatického bobra 2011/12, kategória Junior Tieto binárne hodiny ukazujú čas 12:59 Ktoré z nasledujúcich binárnych hodín ukazujú čas? a c b d 5 / 25

Celé čísla so znamienkom Priamy kód Oddelíme jeden bit pre znamienko V N bitoch teda použijeme N-1 bitov na absolútnu hodnotu čísla a 1 bit na znamienko: 0 znamená plus, 1 znamená mínus 5 00000101-5 10000101 Toto zobrazenie sa v praxi používa zriedka, lebo: Sčítačka, ktorá vie sčitovať čísla bez znamienka sa nedá použiť na takéto čísla, treba urobiť zložitejší obvod existuje v ňom kladná aj záporná nula 6 / 25

Celé čísla so znamienkom Dvojkový doplnkový kód Zaveďme operáciu ako sčítanie modulo 5, teda a b=(a+b) mod 5, v takejto aritmetike potom platí napríklad: 1 1=2, 1 2=3, 1 3=4, 1 4=0 2 2=4, 2 3=0, 0 0=0 Z modrých rovností vidíme, že pri takejto operácii sa 4 chová ako číslo opačné k 1, teda 4 sa chová ako -1 a podobne 3 sa chová ako -2 a 0 je opačná sama k sebe. Vo všeobecnosti číslo (5-x) mod 5 sa chová vzhľadom k operácii ako číslo opačné k x. N- bitová sčítačka počítača počíta na N dvojkových miest - to je aritmetika modulo 2 N. Ak teda zobrazíme -1 ako 2 n -1, -2 ako 2 n -2 atď., tak nemusíme vôbec meniť sčítačku - bude vedieť sčitovať kladné aj záporné čísla 7 / 25

Celé čísla so znamienkom Dvojkový doplnkový kód (2) Príklad: ako je zobrazené číslo -10 v dvojkovom doplnkovom kóde na 8 bitov? Postup 1: -10 bude v 8 bitoch zobrazené ako 2 8-10=256-10=246. Preveďme teda 246 do dvojkovej sústavy: 246 10 =11110110 2 =F6 16 Skúška správnosti 00001010 (zobrazuje 10) +11110110 (zobrazuje -10) 00000000 vyšlo nám to: 10+(-10)=0 Postup 2: pravidlo: číslo zmeníme na opačné tak, že jeho dvojkový zápis doplníme zľava nulami na presný počet bitov, potom zameníme nuly za jedničky a jedničky za nuly a potom ešte pripočítame 1 10 10 =00001010 2 11110101 (zameníme 0 a 1) +00000001 (pripočítame 1) 11110110 (toto je -10) Je to najpoužívanejší kód pre kódovanie celých čísiel v súčasných procesoroch 8 / 25

Celé čísla so znamienkom Dvojkový doplnkový kód (3) Na sčítanie a odčítanie možno použiť rovnaký hardware ako pre čísla bez znamienka Pre násobenie a delenie ale treba vedieť, či sú čísla bez znamienka alebo so znamienkom (výsledok násobenia sa vždy zapisuje do dvojnásobného počtu bitov): Neznamienkovo: 05*FF=5*255=1275=04FB Znamienkovo: 05*FF=5*(-1)=-5=FFFB Aj pri porovnaniach treba vedieť, či ide o čísla so znamienkom alebo bez znamienka: Neznamienkovo: 05 < FF lebo 5 < 255 Znamienkovo: 05 > FF lebo 5 > -1 9 / 25

Celé čísla so znamienkom Kód posunutej nuly Číslo x zobrazíme ako x+s kde S je pevne dané číslo. Napríklad pre 8 bitov a S=127 dostaneme takéto kódovanie (nazývané aj excess 127 ): číslo zobrazené dvojkovo -127 0 00000000-126 1 00000001... -1 126 01111110 0 127 01111111 1 128 10000000 2 129 10000001... 127 254 11111110 128 255 11111111 Výhodou je, že pre porovnávanie zakódovaných čísiel netreba vedieť ich kódovanie (menšie čísla sa zobrazia do menších, väčšie do väčších) Používa sa pre špeciálne účely (napr. exponent čísla v pohyblivej čiarke) 10 / 25

Reálne čísla Zobrazenie s pevnou čiarkou V dvojkovej sústave sa dajú zobraziť aj necelé čísla rovnako ako v desiatkovej sústave: 12.35 10 = 1*10 1 +2*10 0 +3*10-1 +5*10-2 1001.101 2 =2 3 +2 0 +2-1 +2-3 =8+1+0.5+0.125=9.625 10 V N bitoch teda môžeme zobraziť čísla, s pevnou čiarkou tak, že prvých K cifier zľava je pred rádovou čiarkou a zvyšok je za ňou (K<=N). 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 Napríklad N=16, K=8 Tu je rádová čiarka (ale ako programátor píšem všade inde bodku namiesto čiarky) Takéto čísla sa sčitujú a odčitujú rovnako ako celé čísla, ale násobenie a delenie je iné Majú malý rozsah zobraziteľných hodnôt, preto sú nevhodné na vedecké výpočty Majú menej problémov so zaokrúhľovaním, preto sa niekedy používajú na výpočty s peniazmi, kde malý rozsah až tak nevadí 11 / 25

Reálne čísla Zobrazenie s pevnou čiarkou (2) Príklad 1 Zobrazte 2.375 v tvare čísla s pevnou čiarkou v 8 bitoch, kde 4 bity sú pred čiarkou a 4 za ňou. 2.375 10 = 2+0.25+0.125 = 2+1/4+1/8 = 2 1 +2-2 +2-3 = 10.011 2, zapísané do 8 bitov: 00100110 Príklad 2 Aké číslo s pevnou čiarkou je zobrazené v 8 bitovom zápise 01011010 s 3 bitmi pred desatinnou čiarkou a 5 bitmi za ňou? 01011010 10.1101 2 =2 1 +2-1 +2-2 +2-4 =2+1/2+1/4+1/16= 2+0.5+0.25+0.0625=2.8125 10 12 / 25

Reálne čísla Zobrazenie s pohyblivou čiarkou Hmotnosť slnka je asi 2*10 33 g, hmotnosť elektrónu je asi 9*10-28 g. Rozdiel medzi nimi je 61 desiatkových rádov, čo je asi 202 dvojkových rádov. Teda na fyzikálny výpočet s oboma týmito číslami v pevnej rádovej čiarke by sme potrebovali aspoň 202 bitové čísla. Pritom ale takú veľkú presnosť vôbec nevyužijeme lebo obe čísla poznáme s presnosťou ledva 5 cifier. Preto sa pri vedeckých výpočtoch používa zápis čísla v pohyblivej rádovej čiarke, nazývaný tiež semilogaritmický tvar alebo vedecká notácia. Kalkulačky používajú takýto zápis so základom 10. Teda 2308 zapíšu ako 2.308E3 čo znamená 2.308*10 3 2308 sa ale dá zapísať aj ako 23.08*10 2 alebo 0.002308*10 6. Prednosť má ale zápis 2.308*10 3, ktorý má pred desatinnou bodkou práve jednu nenulovú cifru. Nazývame to normalizovaný tvar čísla. V počítačoch sa používa základ 2, teda čísla sa zapisujú v tvare a*2 b, teda treba uložiť dve čísla a a b, obe môžu byť kladné aj záporné. 13 / 25

Reálne čísla Zobrazenie s pohyblivou čiarkou (2) Norma IEEE 754 - najrozšírenejší tvar čísla v pohyblivej rádovej čiarke. Procesory Intel používajú tento tvar (ale pridávajú si ďalší vlastný typ). Normalizované číslo má pred desatinnou bodkou nenulovú cifru, v dvojkovej sústave jediná nenulová cifra je 1. Preto si ju nemusíme pamätať a ušetríme jeden bit mantisy. Binary32 (single precision): 1 bit znamienko mantisy, 8 bitov exponent v kóde "excess 127" a 23 bitov absolútna hodnota mantisy bez prvej jednotky, teda s pevnou rádovou čiarkou pred prvou cifrou. exponent v kóde "excess 127" 01111100 2 =124 teda zobrazuje číslo 124-127=-3 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 znamienko mantisy je + (0 je +, 1 je -) Mantisa bez prvej jednotky, celá mantisa je teda 1.01 =+1.01 2 *2-3 =1.25*2-3 =1.25*0.125= =0.15625 14 / 25

Reálne čísla Zobrazenie s pohyblivou čiarkou (3) Ďalšie typy podľa IEEE-754: Binary16 (half precision): 1 bit znamienko mantisy, 5 bitov exponent v kóde "excess 15" a 10 bitov absolútna hodnota mantisy bez prvej jednotky, teda s pevnou rádovou čiarkou pred prvou cifrou. Tento formát je určený len na ukladanie do pamäti, nie na vykonávanie výpočtov. Binary64 (double precision): 1 bit znamienko mantisy, 11 bitov exponent v kóde "excess 1023" a 52 bitov absolútna hodnota mantisy bez prvej jednotky. Binary128 (quadruple precision): 1 bit znamienko mantisy, 15 bitov exponent v kóde "excess 16383" a 112 bitov absolútna hodnota mantisy bez prvej jednotky. 15 / 25

Reálne čísla Zobrazenie s pohyblivou čiarkou (4) Najmenšia a najväčšia hodnota exponentu sa nepoužíva pre normalizované čísla. Napr. v binary32 môže byť exponent len od -126 po +127, hodnoty exponentu -127 (kód 0) a +128 (kód FF) sú rezervované pre špeciálne čísla: Denormalizované číslo má exponent -127 (kód 0) a k mantise nie je pridávaná prvá jednotka - tak možno zobraziť čísla blízko nuly až do 2-149 za cenu znižujúcej sa presnosti Nula má exponent -127 (kód 0) a mantisu 0, znamienko môže byť + aj - Plus nekonečno má znamienko +, exponent 128 (kód FF), mantisu 0 Mínus nekonečno má znamienko -, exponent 128 (kód FF) a mantisu 0 Not a Number (NaN) má znamienko ľubovoľné, exponent 128 (kód FF) a mantisu nenulovú špeciálne hodnoty sa používajú aj pri výpočtoch, napríklad 1/0 je plus nekonečno, nekonečno deleno nekonečno je NaN a pod. (exponenty -127 a 128 platia pre binary32, pre binary64 sú -1023 a 1024, pre binary16 sú -15 a 16 a pre binary128 sú -16383 a 16384) 16 / 25

Reálne čísla Zobrazenie s pohyblivou čiarkou (4) Zhrnutie špeciálnych formátov v obrázku Ďalšie informácie nájdete napr. na http://en.wikipedia.org/wiki/ieee_floating_point 17 / 25

Rozsahy čísiel podľa IEEE-754 presnosť Typ Rozsah (des. cif.) bajtov binary16 6.1 x 10-5.. 6.5 x 10 4 3-4 2 binary32 1.5 x 10-45.. 3.4 x 10 38 7-8 4 binary64 5.0 x 10-324.. 1.7 x 10 308 15-16 8 binary1286.4 x 10-4966.. 1.2 x 10 4932 34 16 18 / 25

Čísla v Pythone import sys def tryinteger(n): x = 1 print(sys.getsizeof(x)) for i in range(n): x = x*10 print(i,x) print(sys.getsizeof(x)) def tryreal(n): x = 1.0 print(sys.getsizeof(x)) for i in range(n): x = x*10.0 print(i,x) print(sys.getsizeof(x)) Nájdite rozdiel medzi funkciami tryinteger a tryreal. Vysvetlite nájdený rozdiel. Skúste: tryinteger(400) tryreal(400) Na základe pokusu odpovedzte na otázky: Ako je v Pythone uložené celé číslo? Ktorý tvar reálneho čísla podľa IEEE-754 zrejme používa Python pre reálne čísla? 19 / 25

Kompaktné pole v Pythone Modul array umožňuje definovať kompaktné číselné pole. Na rozdiel od zoznamov (typ list) každý prvok poľa obsahuje číslo dopredu presne stanovenej veľkosti a typu. Môžeme si na ňom ukázať prácu s obmedzene veľkými číslami >>> import array >>> a = array.array('b', [2,3,5,7,11,13,17]) >>> a array('b', [2, 3, 5, 7, 11, 13, 17]) >>> a = a + a >>> a array('b', [2, 3, 5, 7, 11, 13, 17, 2, 3, 5, 7, 11, 13, 17]) >>> b = array.array('b', [1]*9) >>> b array('b', [1, 1, 1, 1, 1, 1, 1, 1, 1]) >>> for i in range(1,len(b)): b[i] = 2*b[i-1]... OverflowError: unsigned byte integer is greater than maximum >>> b array('b', [1, 2, 4, 8, 16, 32, 64, 128, 1]) >>> Ukážka je z prednášok ADŠ v roku 2014/15, autor: Andrej Blaho 20 / 25

Kompaktné pole v Pythone kódy a typy kód bajtov bitov znamienko C-typ Python-typ 'b' 1 8áno signed char int 'B' 1 8nie unsigned char int 'h' 2 16áno signed short int 'H' 2 16nie unsigned short int 'i' 2 / 4 16 / 32áno signed int int 'I' 2 / 4 16 / 32nie unsigned int int 'l' 4 32áno signed long int 'L' 4 32nie unsigned long int 'q' 8 64áno signed long long int 'Q' 8 64nie unsigned long long int 'f' 4 32 float float 'd' 8 64 double float Veľkosť typov 'i' a 'I' závisí od toho, akým kompilátorom jazyka C bol preložený použitý interpreter jazyka Python. 21 / 25

Celočíselné typy v C Keď nám nezáleží na presnom zobrazení čísla, tak používame typy: int, ak chceme číslo so znamienkom alebo unsigned int, ak chceme číslo bez znamienka Ak ale záleží na presnom zobrazení, tak máme k dispozícii aj iné typy. Norma jazyka C99 definuje typy int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t Tabuľka uvádza identifikátory pre 32-bitové programy v MS Visual C++ Bajtov Bitov Identifikátor typu v 32-bitovom programe Vo Visual C++ Minimum Maximum char 1 8So znamienkom signed char -128 127 1 8Bez znamienka unsigned char 0 255 2 short 16So znamienkom signed short -32 768 32 767 2 16Bez znamienka unsigned short 0 65 535 4 long 32So znamienkom signed long -2 147 483 648 2 147 483 647 4 32Bez znamienka unsigned long 0 4 294 967 297 8 long long 64So znamienkom signed long long -9 223 372 036 854 775 808 9 223 372 036 854 775 807 Ďalšie informácie napríklad na:http://en.wikipedia.org/wiki/c_data_types 22 / 25

Celočíselné typy v C (2) Čo vypíše tento program? int main() { int n, i; n = 1; for (i = 0; i < 40; i++) { n *= 2; printf("%d %u %x\n",n,n,n); } } tento printf vypisuje premennú n v desiatkovej sústave so znamienkom (formát d), bez znamienka (formát u) a v šestnástkovej sústave (formát x). Čo sa stane keď zmeníme typ premennej z int na char? (Vtedy je rozumné zmeniť aj formáty za hhd, hhu a hhx, o formátoch viď napr. http://www.cplusplus.com/reference/cstdio/printf/) 23 / 25

Celočíselné typy v C (3) Pozor na použitie neznamienkových čísiel v cykloch typu while a repeat: unsigned char i; i = 10; while (i >= 0) { printf("%d\n",i); --i; } hraničná hodnota pre daný typ: signed char i; i = 0; while (i <= 127) { printf("%d\n",i); ++i; } Zacyklí sa lebo pre ľubovoľné i typu unsigned char platí i>=0 Pozor aj na použitie malých čísiel v cykloch keď hranica cyklu je zároveň V C nám nepomôže ani cyklus for, lebo ten je len skratkou pre while: Čo bude robiť tento program? signed char i; for (i = 120; i <= 127; i++) printf("%d\n",i); 24 / 25

Reálne typy v C FPU (floating point unit - aritmeticko-logická jednotka pre pohyblivú rádovú čiarku) procesorov Pentium ponúka reálne čísla single precision, double precision a extended precision. Single a double sú definované ako v norme IEEE 754, extended je špeciálny typ procesorov Intel - nepoužíva rozšírenie o jeden bit mantisy, teda ukladá aj prvú jednotku mantisy. Typ Rozsah presnosť (des. cifier) bajtov bitov float 1.5 x 10-45.. 3.4 x 10 38 7-8 4 32 double 5.0 x 10-324.. 1.7 x 10 308 15-16 8 64 long double 3.6 x 10-4951(-4966).. 1.1 x 10 4932 19-20 (33-36) 10(16) 80(128) Typ long double môže byť implementovaný pomocou typu extended precision v CPU Intel alebo ako binary128 podľa IEEE 754 (potom platia údaje v zátvorkách). Ak nie je možná žiadna implementácia presnejšia než double, tak je implementovaný rovnako ako double. 25 / 25