Download as pdf or txt
Download as pdf or txt
You are on page 1of 20

Datové typy Java

Hrátky s datovými typy


Otázka 1
• Který z následujících datových typů v Javě není
primitivní?

1. int

2. Boolean

3. float
Otázka 2
• Jakého typu musí být proměná c, do níž
přiřazujeme výsledek operace c = a + b, kde a
je typu int a b je typu float?

1. int

2. double

3. float
Otázka 3
• Který z následujících kroků není běžnou
součástí algoritmizace?

1. Analýza úlohy
2. Příprava finančního rozpočtu
3. Odladění programu
4. Vytvoření algoritmu
5. Formulace problému
6. Sestavení programu
Rozsahy a paměť
Rozsahy a paměť

V kódu je lze zapisovat následovně


1.,
–23.2,
5E+7,
3e-5 apod.
Co třeba nekonečno?
double zero = 0.0;
double res = -7. / zero;
System.out.println(res);
if (Double.isInfinite(res) == true) {
System.out.println("nekonecno");
}

double res = zero / zero;


System.out.println(res);
if (Double.isInfinite(res) == true) {
System.out.println("není cislo");
}
Kouzla se znaky: char
Jak tyto znaky zapisovat?
Jako jediný znak např. všechny znaky z ASCII, což jsou
anglické znaky např. 'A'.

Jakékoliv jiné znaky s diakritikou a podobně se musí


zapisovat následujícím způsobem
escape sekvence — tímto způsobem lze zapsat
absolutně každý znak, ale vzhledem k jejich zjevné
nečitelnosti se tento způsob omezuje na minimum.
Sekvence se skládá z zpětného lomítka následovaného
čtveřicí šestnáctkových čísel tedy '\uXXXX'.
Kouzla se znaky: char
Podle následující tabulky budete muset všechny
diakritické znaky zapisovat tímto způsobem
např. 'á' zapíšete jako '\u00E1'.
Kouzla se znaky: char

int \u010D\u00EDta\u010D;
// to je třeba identifikátor čítač

Tedy:
int čítač;
// ale vážně tohle nechceme...brr
Kouzla se znaky: char

Osmičkový zápis tj. '\000'— všechny znaky jsou


nutné, tedy i nuly na začátku jsou významové
např. '\012' (LF)
Kouzla se znaky: char
Escape sekvence:
Vypadá jako převzatý z C, přičemž i následující znaky, jak
uvidíte, se dají zapsat i normálním escape sekvencí.
Pozor na přetečení...
• Přetečení (overflow) při součtu dvou byte čísel v
Javě může nastat, když výsledek operace
přesáhne rozsah, který je možný pro daný datový
typ. V případě datového typu byte v Javě je
rozsah -128 až 127 (8 bitů se znamínkem).

Ověřte programem pro a=120 a b=10 a vypište výsledek


Pozor na přetečení...

• Výše uvedený kód inicializuje dvě byte proměnné a a b s hodnotami 120 a 10. Při jejich součtu se
použije přetypování na byte, ale přesto dojde k přetečení. Bitová reprezentace proměnných a, b a
výsledku soucet bude:

– a v binární reprezentaci: 01111000


– b v binární reprezentaci: 00001010
– Výsledek soucet v binární reprezentaci: 10000010

• Bitová reprezentace výsledku soucet ukazuje, že nejvýznamnější bit je 1, což znamená, že došlo k
přetečení a výsledek je negativní. Ve dv's komplementu znamená 10000010 hodnotu -126.
Dv's komplement (Two's complement)
• způsob reprezentace celých čísel v binárním kódu, který umožňuje efektivní práci s
kladnými a zápornými čísly ve výpočetní technice. Tato reprezentace umožňuje
provádět operace sčítání a odčítání pomocí stejných hardwarových mechanismů,
což usnadňuje implementaci aritmetických operací.

• Hlavní vlastností dv's komplementu je to, že záporná čísla jsou reprezentována


pomocí invertované hodnoty pozitivního čísla (jeho jedničky se stávají nulami a
naopak), a poté je k této invertované hodnotě přidána 1. Tím se záporná čísla
stávají doplňkovými k příslušným kladným číslům. Tato reprezentace umožňuje
jednoduché sčítání a odčítání bez potřeby speciálního kódu pro rozlišení záporných
a kladných čísel.

• Například, pokud máme 8-bitové číslo v dv's komplementu a chceme


reprezentovat -5, provedeme následující kroky:

– Převedeme absolutní hodnotu čísla 5 na binární tvar: 00000101.


– Invertujeme všechny bity: 11111010.
– Přidáme 1 k invertované hodnotě: 11111011.
– Výsledná binární reprezentace -5 v dv's komplementu je 11111011.

• Dv's komplement umožňuje efektivní reprezentaci a manipulaci se zápornými čísly,


a je hojně využíván v počítačové architektuře a programování, zejména při práci s
binárními daty a operacemi sčítání a odčítání.
Dv's komplement (Two's complement)

Příklad 1: Převod záporného čísla na dv's komplement

Převeďte číslo -10 na jeho binární reprezentaci v dv's


komplementu.

Řešení:

1. Převedeme absolutní hodnotu čísla 10 na binární tvar:


00001010.
2. Invertujeme všechny bity: 11110101.
3. Přidáme 1 k invertované hodnotě: 11110110.
4. Binární reprezentace -10 v dv's komplementu je
11110110.
Dv's komplement (Two's complement)

Příklad 2:

Převod čísla 25 na záporné číslo v dv‘s komplementu.

Řešení:

1. Převeďte absolutní hodnotu čísla 25 na binární tvar:


00011001.
2. Invertujte všechny bity: 11100110.
3. Přidejte 1 k invertované hodnotě: 11100111.
4. Binární reprezentace záporného čísla -25 v dv's
komplementu je 11100111.
Dv's komplement (Two's complement)

Příklad 3:

Převod čísla 63 na záporné číslo v dv's komplementu.

Řešení:

1. Převeďte absolutní hodnotu čísla 63 na binární tvar:


00111111.
2. Invertujte všechny bity: 11000000.
3. Přidejte 1 k invertované hodnotě: 11000001.
4. Binární reprezentace záporného čísla -63 v dv's
komplementu je 11000001.
Procvičení práce s datovými typy
• Vytvořte program, který umožní uživateli provádět několik operací s
různými datovými typy, včetně celých čísel, desetinných čísel,
řetězců a logických hodnot.

• Zadání pro procvičení:

1. Vytvořte proměnnou celeCislo a přiřaďte jí hodnotu 42.


2. Vytvořte proměnnou desCislo a přiřaďte jí hodnotu 3.14 (číslo s
pohyblivou řádovou čárkou).
3. Vytvořte proměnnou retezec a přiřaďte jí hodnotu "Ahoj, lidi!".
4. Vytvořte proměnnou pravdaNepravda a přiřaďte jí hodnotu true
(logická hodnota).
5. Vypočtěte součet celeCislo a desCislo a výsledek uložte do
proměnné soucet. Vypište výsledek.
6. Vypište délku řetězce v proměnné retezec.
7. Zkontrolujte, zda proměnná pravdaNepravda má hodnotu true a
vypište výsledek.
Procvičení práce s datovými typy

You might also like