140 likes | 348 Views
PRIPO Principy počítačů. 20.10. – cvičení č. 5 Odčítání v binární soustavě Doplňkový kód Procvičení převodů mezi soustavami. Martin Adámek. Organizační drobnosti. docházka. Připomenutí: Sčítání ve dvojkové soustavě. Úplně stejně jako desítkové
E N D
PRIPOPrincipy počítačů 20.10. – cvičení č. 5 Odčítání v binární soustavě Doplňkový kód Procvičení převodů mezi soustavami Martin Adámek
Organizační drobnosti • docházka PRIPO, cvičení – Ing. Martin Adámek (UHK-FIM-KIT)
Připomenutí: Sčítání ve dvojkové soustavě • Úplně stejně jako desítkové • při písemném sčítání pod sebou jasné&názorné • Jen máme k dispozici jen dvě číslice • jsme nuceni dříve použít vyšší řád PRIPO, cvičení – Ing. Martin Adámek (UHK-FIM-KIT)
Přidán zvláštní znaménkový bit 0 ~ + 1 ~ - most-significant bit (MSB) Nula redundantně zabírá dvě číselné kombinace 8 bitů: MSB=0: 0 až 127 MSB=1: -127 až -0 celkový rozsah:-127..+127(místo 0 až 255 u přirozených čísel) (tabulka převzata z přednášky) 0 0000 +0 1 0000 -0 0 0001 +1 1 0001 -1 0 0010 +2 1 0010 -2 0 0011 +3 1 0011 -3 0 0100 +4 1 0100 -4 0 0101 +5 1 0101 -5 0 0110 1 0110 0 0111 1 0111 0 1000 1 1000 0 1001 1 1001 0 1010 1 1010 0 1011 1 1011 0 1100 1 1100 0 1101 1 1101 0 1110 +14 1 1110 -14 0 1111 +15 1 1111 -15 Záporná čísla v přímém kódu PRIPO, cvičení – Ing. Martin Adámek (UHK-FIM-KIT)
Binární záporná čísla obecně • vždy musíme vědět, kolikabitový je kód • kolik řádů/bitů máme k dispozici => který bit je znaménkový (MSB) • např. v přímém kódu • 1+3 bity: 1 101(2) = -5(10) • 1+4 bity: 0 1101(2) = +13(10) • stejně (+13d) i pro 1+5, 1+6, ... bitůnebo pro 0+4 bity PRIPO, cvičení – Ing. Martin Adámek (UHK-FIM-KIT)
Odčítání – přímý kód • jako v desítkové • odečte se po řádech zprava • při odečítání „0-1“ se vypůjčí „1“ zleva • odečítá se menší od většího, při záměně menšence a menšitele se změní znaménkový bit • 26-9=17 • 26(10)=16+8+0+2+0(10)=11010(2) • 9(10)=8+0+0+1(10)=1001(2) • 11010-01001=10001(2) • 1101-0101; 1011-1001; • 1001-0011; 1000-0011 • odčítání více čísel ? • postupně; nebo nejdříve všechny menšitele sečíst PRIPO, cvičení – Ing. Martin Adámek (UHK-FIM-KIT)
Inverzní kód • jako přímý, jen záporná čísla jsou inverzí kladného čísla (logická negace bit po bitu) • +5(10)=0 101(2) • -5(10)=1 010(2) • rozsah jako u přímého (nula dvakrát),jen jiná záporná čísla PRIPO, cvičení – Ing. Martin Adámek (UHK-FIM-KIT)
Doplňkový kód(dvojkový doplněk) • kladná čísla jsou v něm stejně jako v přímém (nebo inverzním) kódu • záporná číslo jako v inverzním,ale navíc se přičítá „1“ =>nula jen jednou => -1 + 1 = 0 => -1 + 2 = 1 • funguje matematika • jediný reálně využívaný kód pro práci se zápornými čísly • navíc se rozsah datového typu zvýší o 1 (v záporné oblasti) PRIPO, cvičení – Ing. Martin Adámek (UHK-FIM-KIT)
Doplňkový kódpříklady pro 1+4bity • -3(10): • +3(10)=0 0011(2) • -3(10)=1 1100(2) + 1 • -3(10)=1 1101(2) • +15(10): • +15(10)=0 1111(2) • -16(10): • -15(10)=1 0001(2) • -16(10)=1 0000(2) • přetečení: • 15(10)+1=? • 0 1111(2)+1=1 0000(2) • 1 0000(2)=-16(10) • 15(10)+1=-16(10) => rozsah -16 až +15 • -3(10): • přímý kód: 1 0011 • inverzní kód: 1 1100 • doplňkový kód: 1 1101 PRIPO, cvičení – Ing. Martin Adámek (UHK-FIM-KIT)
Přetečení (registru, paměti) • situace, kdy je snaha o přenos do neexistujícího bitu (nestačí bity/řády) • maximum+1 = minimum • platí i u datových typů pro kladná čísla: • 1111 + 1 = 10000 • ale při 4 bitech se zapíše jen 0000 PRIPO, cvičení – Ing. Martin Adámek (UHK-FIM-KIT)
Doplňkový kód – rozsah • nula jen jednou => rozsah o 1 větší než u přím.a in. • +0: 0 0000 • -0: 1 1111 + 1 = 0 0000 • jazyk Pascal – některé datové typy • Shortint: -128..+127 (8b: 1MSB, zbyde 7; 27=128; -128 až -1 a 0 až 127) • 127+1 = -128 – přetečení • Byte: 0..+255 (8b) • Word: 0..65535 (16b) • Integer: -32768..+32767 (16b) • dříve se datové typy volily odpovědně, snahou byla nenáročnost programu na RAM • „640KB musí stačit každému“ – autor výroku = ? • Bill Gates o základní paměti v OS MS-DOS • pro přístup do zbytku RAM (např. 8MB, 32MB) složitější postup • dnes např. 2GB, 4GB RAM PRIPO, cvičení – Ing. Martin Adámek (UHK-FIM-KIT)
„Odčítání“ s doplňkovým kódem 8-6=2 • 8-6 = 8 + (-6) • 8(10) = 0 1000(2) • 6(10) = 0 0110(2) • -6(10) = 1 1001(2) + 1 = 1 1010 (2) • 0 1000 + 1 1010 = 0 0010 (2) = 2 • počítač odčítání obejde sčítáním ! • a nejen on ! • (a nejen odčítání) PRIPO, cvičení – Ing. Martin Adámek (UHK-FIM-KIT)
Procvičit si • převody mezi číselnými soustavami (cv. 4) • doplňkový kód (cv. 5) • výpočet Un a In v sérioparalelním zapojení rezistorů (cv. 2-3) PRIPO, cvičení – Ing. Martin Adámek (UHK-FIM-KIT)
Příště • Procvičení probraných témat Přespříště • logické funkce • úvod do Booleovy algebry PRIPO, cvičení – Ing. Martin Adámek (UHK-FIM-KIT)