====== 2. Reprezentace čísel v počítači a operace s nimi ====== * pro vyučující: [[..:..:internal:tutorials:02:start|cvičení 2]] ===== Osnova cvičení ===== - reprezentace celých čísel, operace sčítání, odčítání, násobení a dělení - reprezentace reálných čísel (IEEE 754) - zadání 1. domácího úkolu (na stránce [[https://dcenet.felk.cvut.cz/apo/]]) ===== Co bych si měl na cvičení zopakovat/připravit ===== - logické operace s binárními čísly (and, or, rotace, ...) - doplňkový kód a IEEE 754 - rozumět demonstračnímu programu z předchozího cvičení ===== Náplň cvičení ===== Cílem je procvičit binární reprezentace celých a reálných čísel v počítači a procvičit aritmetické operace s nimi. ===== Úkoly ===== - Sčítání a odčítání celých čísel v doplňkovém kódu * demonstrujte výpočet např. 7+6, 7-6 * procvičte výpočet na dalších číslech a pomocí programu z předchozího cvičení výsledky ověřte * Kdy může dojít k přetečení a jak poznáte, že k němu došlo? - Násobení celých čísel * demonstrujte výpočet např. 7*6 * jak se výpočet změní v případě záporných čísel? např. -7*6, -7*(-6), 7*(-6) * rychlá verze hw násobičky (jak zrychlit opakované sčítání na jedné sčítačce použitím většího množství sčítaček?) - Dělení celých čísel * demonstrujte výpočet např. 42/7, 43/7 * jak se výpočet změní v případě záporných čísel? - Reprezentace reálných čísel (IEEE 754) * binární reprezetnace reálných čísel (float - 32bit, double - 64bit) * převeďte na binární reprezentaci číslo -0.75, ověřte správnost pomocí programu z minulého cvičení * převeďte float z binární reprezentace 0xC0A00000 na reálné číslo v desitkové soustavě * demonstrujte výpočet (v desítkové soustavě) 9.999*10^1 + 1.1610*10^(-1), předpokládejte, že je možné uložit pouze 4 cifry čísla a 2 cifry exponentu. * Návod: 1) zarovnání čísel, 2) součet, 3) normalizace, 4) zaokrouhlení * v binární reprezentaci sečtěte čísla 0.5 a -0.4375 * demonstrujte výpočet (v desítkové soustavě) 1.110*10^10 * 9.200*10^(-5) * v binární reprezentaci vynásobte čísla 0.5 a -0.4375 ===== Odkazy ===== * [[http://opensource.apple.com/source/gcc_os/gcc_os-1660/gcc/config/fp-bit.c|gcc/config/fp-bit.c]] - implementace operací v plovoucí řádové čárce s využitím operací v pevné řádové čárce tak v knihovně kompilátoru [[http://gcc.gnu.org|GCC]] pro procesory, které hardwarovou implementací operací nedisponují. * Materiál k IEEE 754: {{courses:B35APO:tutorials:02:apo2.pdf|}} /* * [[courses:b35apo:solutions:02:start]]*/