Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Podobné dokumenty
Java reprezentace dat, výrazy. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické

5 Přehled operátorů, příkazy, přetypování

Algoritmizace a programování

Paměť počítače. alg2 1

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Algoritmy I. Číselné soustavy přečíst!!! ALGI 2018/19

Úvod do programovacích jazyků (Java)

Algoritmy a datové struktury

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Architektury počítačů

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

Informatika Datové formáty

3 Jednoduché datové typy Interpretace čísel v paměti počítače Problémy s matematickými operacemi 5

Čísla a číselné soustavy.

Racionální čísla, operátory, výrazy, knihovní funkce

Datové typy a jejich reprezentace v počítači.

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Racionální čísla, operátory, výrazy, knihovní funkce

Algoritmizace a programování

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

ADT/ADS = abstraktní datové typy / struktury

Základní principy zobrazení čísla Celá čísla s pevnou řádovou čárkou Zobrazení reálných čísel Aritmetika s binárními čísly

Číselné soustavy. Binární číselná soustava

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy

Jak v Javě příkazy, operace a výrazy. BD6B36PJV 00 Fakulta elektrotechnická České vysoké učení technické

Tato tematika je zpracována v Záznamy přednášek: str materiál: PrikladyZobrazeniCisel.pdf

Čísla v plovoucířádovéčárce. INP 2008 FIT VUT v Brně

Principy počítačů I Reprezentace dat

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Sada 1 - Základy programování

v aritmetické jednotce počíta

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

Algoritmizace a programování

Programování v jazyce C pro chemiky (C2160) 12. Specifické problémy při vývoji vědeckého softwaru

PJC Cvičení #2. Číselné soustavy a binární reprezentace proměnných

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky

Úloha 1 Spojte binární obrazy na obrázku s hodnotami, které reprezentují.

BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky

Elementární datové typy

Číselné soustavy. Ve světě počítačů se využívají tři základní soustavy:

MQL4 COURSE. By Coders guru -4 Operace & Výrazy

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

VÝRAZY výrazy = operandy prokládané operátory, vyhodnocované podle priority operátorů

LEKCE 6. Operátory. V této lekci najdete:

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Nejvyšší řád čísla bit č. 7 bit č. 6 bit č.5 bit č. 4 bit č. 3 bit č. 2 bit č. 1 bit č. 0

Jazyk C# a platforma.net

Datové typy strana 29

Úvod do programování. Lekce 1

Programování v jazyce JavaScript

Operátory. Základy programování 1 Tomáš Kühr

Vnitřní reprezentace dat

Algoritmizace prostorových úloh

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

Čísla v počítači Výpočetní technika I

Algoritmizace a programování

Algoritmizace a programování

2 Ukládání dat do paměti počítače

Úvod do programování - Java

Operátory. Základy programování 1 Martin Kauer (Tomáš Kühr)

7. Datové typy v Javě

Nejvyšší řád čísla bit č. 7 bit č. 6 bit č.5 bit č. 4 bit č. 3 bit č. 2 bit č. 1 bit č. 0

4 Datové struktury. Datové struktury. Zobrazení dat v počítači

C2115 Praktický úvod do superpočítání

Algoritmizace prostorových úloh

Výrazy, operátory a řídicí struktury

Výrazy, operace, příkazy

PB002 Základy informačních technologií

Ing. Igor Kopetschke TUL, NTI

KTE / ZPE Informační technologie

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

E. Pohyblivářádováčárka

Data, výrazy, příkazy

Architektura počítačů Logické obvody

Principy počítačů. Prof. RNDr. Peter Mikulecký, PhD.

Floating Point. Jak je reprezentovaný a proč někdy nefunguje. 2. června 2013

Reprezentace dat v informačních systémech. Jaroslav Šmarda

Část I Výrazy a operátory

Úvod do programování 7. hodina

Čísla, reprezentace, zjednodušené výpočty

Opakování programování

Struktura a architektura počítačů (BI-SAP) 6

Základní jednotky používané ve výpočetní technice

Přednáška 2: Čísla v počítači. Práce s počítačem. Číselné soustavy. Převody mezi soustavami. Aritmetické operace. Uložení čísel v paměti počítače

Architektura počítačů Logické obvody

NPRG030 Programování I, 2010/11

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

NPRG030 Programování I, 2018/19 1 / :25:37

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Aritmetické operace a obvody pro jejich realizaci

NPRG030 Programování I, 2016/17 1 / :58:13

Základy algoritmizace 2. Proměnné, datové typy

Exponent. Integer 4 bajty až Double Integer 8 bajtů až

1. Chyby vstupních dat metody převedení úlohy na numerickou (řád použité metody) zaokrouhlovací reprezentace čísel v počítači

Mikroprocesorová technika (BMPT)

Datové typy pro reálná čísla

Fz =a z + a z +...+a z +a z =

Transkript:

Jak v Javě primitivní datové typy a jejich reprezentace BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Obsah Celočíselný datový typ Reálný datový typ Logický datový typ, typ Boolean Znaky Kompatibilita datových typů Priorita operátorů BD6B36PJV 002 2

Datové typy Při návrhu algoritmů a psaní programů ve vyšších programovacích jazycích abstrahujeme od binární podoby paměti počítače S daty pracujeme jako s hodnotami různých datových typů, které jsou uloženy v datových objektech Datový typ (zkráceně jen typ) specifikuje: graficky množinu hodnot (+ způsob reprezentace) množinu operací, které lze s hodnotami daného typu provádět Příklad typu: celočíselný typ int v jazyku Java: množinou hodnot jsou celá čísla z intervalu -2147483648.. 2147483647 množinu operací tvoří aritmetické operace +, -, *, /, jejichž výsledkem je hodnota typu int relační operace ==,!=, >, >=, <, <=, jejichž výsledkem je hodnota typu boolean a další Typ int je jednoduchý typ, jehož hodnoty jsou atomické (z hlediska operací dále nedělitelné) BD6B36PJV 002 3

Celá čísla v Javě typ int int je reprezentováno 32 bity znaménko hodnota, binárně největší číslo 0111...111 = 2 31-1 = 2147483647 Pro zobrazování záporných čísel doplňkový kód nejmenší číslo v doplňkovém kódu 1000...000 = -2 31 = -2147483648 BD6B36PJV 002 4

Reprezentace záporných celých čísel Doplňkový kód D(x) předpokládejme reprezentaci čísel pomocí 8 bitů, lze reprezentovat 2 8 = 256 čísel = r (rozsah) D(x) = desítkově x, pro 0 <= x <r/2 r+x, pro 0 > x>= -r/2 doplňkový kód 0 127 00000000 01111111 128 nelze zobrazit na 8 bitů v d.k. -128 D(-128) = -128+256 = 128 = 10000000-1 D(-1) = -1+256 = 255 = 11111111-4 D(-4) = -4+256 = 252 = 11111100 Pozor na důsledky počítání (v doplňkovém kódu) pro int: 2 000 000 000 + 1 000 000 000 = -1 294 967 296 BD6B36PJV 002 5 Pro zájemce

Zobrazení reálných čísel - nepřesnost pokusme se v dekadické soustavě zapsat číslo 1/3 (jedna třetina) 0,3 přesněji 0,33 lépe 0,333... 0,333333333333333333333333333333333333 jelikož máme omezený paměťový prostor, nikdy neuložíme číslo 1/3 přesně ( jak by číslo 1/3 vypadalo v trojkové soustavě?) 0*3 1 + 0*3 0 + 1*3-1 = (0,1) 3 BD6B36PJV 002 6

Nepřesnost v zobrazení čísel Nepřesnosti způsobují 1. Čísla, jež mají v dané soustavě periodický rozvoj (1/3 ve dvojkové či dekadické soustavě, 1/10 ve dvojkové) 2. iracionální čísla ( e, π,,. ) 3. Čísla, která mají příliš dlouhý zápis 2 Implementace double (na 64 bity) 1bit znaménko dvě možnosti, +,- 11 bitů exponent 2048 možností 52 bitů 4 503 599 627 370 496 možností, tedy asi 4,5 biliardy není možné v typu double přesně uložit čísla se zápisem delším než 52 bitů! čím větší exponent tím větší mezery mezi sousedními aproximacemi!!!???? A0B36PR1 BD6B36PJV - 02 002 7

Necelá čísla v Javě typ double Reálná čísla X se zobrazují ve tvaru: X= mantisa*základ exponent exponent mantisa double je reprezentován 64 bity, norma IEEE 754 znaménkový bit (s), exponent, mantisa Nejmenší čísla v normalizovaném tvaru ±2 1024 ±2.2250738585072020 10 308 Největší čísla ±(1-(1/2) 52 )2 1024 ±1.7976931348623157 10 308 BD6B36PJV 002 8

Model reprezentace reálných čísel Reálná čísla se zobrazují jako aproximace daných rozsahem paměťového místa Reálná čísla se zobrazují ve tvaru: X= mantisa*základ exponent = m*z exponent Mantisa musí být normalizována: 0,1<=m<1, důvod: jednoznačnost zobrazení Model dekadický počítač délka mantisy 3 pozice + znaménko délka exponentu 2 pozice + znaménko Příklad X= 77.5 = +0.775*z +02 zakódujeme znaménko + = 0, = 1 z je pro názornost 10 + 775 + 02 1 775 1 02 BD6B36PJV 002 9

Model reprezentace reálných čísel Maximální zobrazitelné kladné číslo Minimální zobrazitelné kladné číslo Maximální zobrazitelné záporné číslo (v absolutní hodnotě) Minimální zobrazitelné záporné číslo (v absolutní hodnotě) Nula Jak je to se zobrazitelnými hodnotami okolo nuly, + 999 + 99 + 100-99 - 999 + 99-100 - 99 0 000??? -0.999z 99 0.999z 99-0.101z -99-0.100z -99 0.000z?? 0.101z-99 0.100z-99 BD6B36PJV 002 10

Model reprezentace reálných čísel Jaká je vzdálenost dvou aproximací?? To závisí na hodnotě!!! +MAXIMUM 0.999z 99 NULA 0.000z?? 0.100z -99 0.101z -99 0.100z12 0.101z 12 Aproximace reálných čísel: nejsou na číselné ose rovnoměrně rozložené!! NULA +MAXIMUM BD6B36PJV 002 11

Reprezentace reálných čísel Reálná osa Spojitá reálná osa Zobrazení aproximací (pro jeden exponent!!) Reálná čísla se zobrazují jako aproximace daných rozsahem paměťového místa Diskrétní aproximace v paměti počítače BD6B36PJV 002 12

Reprezentace znaků Java používá typ char, znaky jsou kódovány 16 bitovým kódem Unicode (UTF-16, podmnožina UCS-2). Odstraňuje problémy češtiny Programy v Javě provádí konverzi znaků mezi vnitřní reprezentaci v programech a OS, většinou automaticky podle informací OS (Locale) Poznámky Různé OS různá kódování sedmibitové ASCII (American Standard Code for Information Interchange), osmibitová Win1250, ISO 8859-2, kód s proměnnou délkou znaku - UTF8(UCS Transformation Format),. Java UCS2 Universal Character Set - univerzální znaková sada definována normou ISO 10646 BD6B36PJV 002 13

Reprezentace znaků, část reprezentace BD6B36PJV 002 14

Typ boolean true false Reprezentace 1/8 BD6B36PJV 002 15

Primitivní či základní datové typy Typ Bitů Rozsah Obal.třída Celočíselný typ byte 8-128 127 Byte short 16-32768 32767 Short int 32-2147483648 2147483647 Integer long 64-9223372036854775808 9223372036854775807 Reálný typ, IEEE 754 (NaN, infinity ) Long float 32 2-149 (2-2 -23 )*2 127 Float double 64 2-1074 (2-2 -52 )*2 1023 Double Znaky, UCS2 char 16 '\u0000' to '\uffff 0... 65535 Character Logický typ boolean 1/8 true false Boolean Pomocný prázdný typ void A0B36PR1 BD6B36PJV - 02 002 16

Konverze primitivních typů Primitivní typy jsou vzájemně nekompatibilní, ale jejich hodnoty lze převádět. rozšíření přiřazením zúžení přetypováním byte short char znaménko: 0/1 ~ +/- int long float exp mantisa pozor double exp mantisa BD6B36PJV 002 17

Operátory a jejich priorita priorita operátor typ operandu asociativita operace 1 ++ aritmetický P pre/post inkremetace -- aritmetický P pre/post dekrementace - aritmetický P unarní plus/minus ~ celočíselný P bitová inverze! logický P logická negace (typ) libovolný P přetypování 2 *, /,% aritmetický L násobení, dělení, zbytek 3 - aritmetický L odečítání + aritmetický, řetězový L sčítání, zřetězení přehled A0B36PR1 BD6B36PJV - 02 002 18

Operátory a jejich priorita II priorita operátor typ operandu asociativita operace 4 << celočíselný L posun vlevo 7 & >> celočíselný L posun vpravo >>> celočíselný L posun vpravo s doplňováním nuly <,>, <=, >= aritmetický L porovnání instanceof objekt L test třídy ==,!= primitivní L rovno, nerovno celočíselný nebo logický L bitové nebo logické AND 8 ^ -"- L bitové nebo logické XOR 9 -"- L bitové nebo logické OR přehled A0B36PR1 BD6B36PJV - 02 002 19

Operátory a jejich priorita III priorita operátor typ operandu asociativita operace 10 && logický L 11 logický L logické AND vyhodnocované zkráceně logické OR vyhodnocované zkráceně 12? : logický P podmíněný operátor 13 =, -=, *=, /=, %=, ==, &=, ^=, = libovolný P přiřazení přehled A0B36PR1 BD6B36PJV - 02 002 20