Talstelsels, rekenen en rekenschakelingen Binaire code Hexadecimale code Optellen Two’s complement code Aftrekken Arithmetic Logic Unit Sign extension Vermenigvuldigen
Decimale code Binaire code 235 = 2 * 102 + 3 * 101 + 5 * 100 = 200 + 30 + 5 101 = 1 * 102 + 0 * 101 + 1 * 100 = 100 + 0 + 1 Grondtal is 10 Binaire code 101 = 1 * 22 + 0 * 21 + 1 * 20 = 4 + 0 + 1 = 5Dec. 1101 = 1 * 23 + 1 * 22 + 0 * 21 + 1 * 20 = 8 + 4 + 0 + 1 = 13Dec. Grondtal is 2
Decimale getal Binaire getal 23 8 22 4 21 2 20 1 3 5 6 7 9 10 11 12 13 14 15
Hexadecimale code Verkorte schrijfwijze binaire code Grondtal 16 Dus zijn er 16 “cijfers” nodig 0 .. 9, A, B, C, D, E en F
Optellen Getal Decimaal Binair A 25 1 1 0 0 1 B 29 1 1 1 0 1 A + B 54 1 1 0 1 1 0 ↑ ↑ ↑ ↑ = 1 onthouden
Optellen Getal Decimaal Binair transport 1 11001 A 25 11001 B 29 11101 1 11001 A 25 11001 B 29 11101 A + B 54 110110 1 onthouden
Optellen Getal Decimaal Binair transport 1 11001 A 25 11001 B 29 11101 1 11001 A 25 11001 B 29 11101 A + B 54 110110 onthouden Carry bit Sum bit
Optellen Getal Decimaal Binair transport 1 11001 A 25 11001 B 29 11101 Half adder Getal Decimaal Binair transport 1 11001 A 25 11001 B 29 11101 A + B 54 110110 onthouden Carry bit Sum bit
Half Adder a b Carry gewicht = 2 Sum Gewicht = 1 1 Half adder
Optellen Getal Decimaal Binair transport 1 11001 A 25 11001 B 29 11101 Full adder Half adder Getal Decimaal Binair transport 1 11001 A 25 11001 B 29 11101 A + B 54 110110 onthouden Carry bit Sum bit
Full Adder a b c Carry Sum 1 Tabel full adder
Optelschakeling voor twee getallen van vier bits
Hoe Marsvrouwtjes rekenen Martiaanse getallen Hoe Marsvrouwtjes rekenen
Alle Martiaanse cijfers Hun aardse waarde staat ervoor 0 1 2 3 Welk talstelsel gebruikt men op Mars? Antwoord Wat is de aardse, decimale waarde van het volgende Martiaanse getal: 121 25 18 212 Tel de Martiaanse getallen op, die hieronder staan. Noteer de uitkomst in het Martiaans. ____+
Alle Martiaanse cijfers Hun aardse waarde staat ervoor 0 1 2 3 Welk talstelsel gebruikt men op Mars? Antwoord 4 Wat is de aardse, decimale waarde van het volgende Martiaanse getal: 121 25 (= 1*42 + 2 * 41 + 1 * 40) 18 212 Tel de Martiaanse getallen op, die hieronder staan. Noteer de uitkomst in het Martiaans. (10) (32) + (102)
Opgaven Vragen en opdrachten paragraaf 2.5
Rekenen en rekenschakelingen Binaire code Hexadecimale code Optellen Two’s complement code Aftrekken Arithmetic Logic Unit Sign extension Vermenigvuldigen
Negatieve getallen One’s complement code 1 .. -7 -3 -2 -1 -0 2 3 7 Waarom is deze code minder geschikt?
Negatieve getallen Two’s complement code 1 .. -8 -4 -3 -2 -1 2 3 7 4-bit: Bereik -8 .. +7
Negatieve getallen Hoe genereer ik een negatief getal?
Negatieve getallen Hoe genereer ik een negatief getal? 0001 1001 25 complement 1110 0110 1 Two’s complement 1110 0111 -25 Controle: -128 + 64 + 32 + 4 + 2 + 1 = -25
Negatieve getallen
Signed Integer 8 bit 0100 0000 = 64 1000 0111 = -121 Range: 0 .. n = 8 Range –128 .. 127 n = 16 Range -32768 .. 32767 n = 32 Range –2.147.483.648 .. 2.147.483.647
Overflow (in 4 bit systeem) 0011 0110 3 6 1001 -7 1011 1010 -5 -6 10101 +5 + + antwoord 1001 + overflow antwoord –7 + 16 = +9 antwoord 0101 + overflow antwoord 5 - 16 = -11 Negeren 4 bit systeem
Two’s complement code
Hoe werkt de hardware? Schakeling die kan aftrekken
Aftrekken : -3 – (+6) = -3 +(-6) 1101 0110 -3 6 1101 1010 -3 -6 10111 7 - + antwoord 0111 + overflow antwoord 7 - 16 = -9 0110 bits inverteren 1001 1 bij optellen 1 1010 Negeren 4 bit systeem
ALU Operanden Operaties
NOT(a15): hoogste bit van het getal A is ‘0’ Overflow condities: Overflow bij optellen als: Twee positieve getallen: antwoord negatief Twee negatieve getallen: antwoord positief Overflow bij aftrekken als: Positieve getal – negatief getal: antwoord negatief Negaief getal – positief getal: antwoord positief Voor 16 bit systeem: Overflow =((NOT(a15)) AND (NOT(b15)) AND (Y15)) OR ((a15)AND (b15) AND (NOT(Y15))) OR ((NOT(a15)) AND (b15) AND (Y15)) OR ((a15) AND (NOT(b15)) AND (NOT(Y15))). NOT(a15): hoogste bit van het getal A is ‘0’
Opgaven Opgaven: Hoofdstuk 2.6 & 2.7 Vervolg colleges: 11.00 uur Hoofdstuk 3 eerste deel 13.30 uur Hoofdstuk 3 tweede deel
"sign extension" Converting n bit numbers into numbers with more than n bits: 8 bit gets converted to 16 bits copy the most significant bit (the sign bit) into the other bits 0011 0010 -> 0000 0000 0011 0010 1001 1010 -> 1111 1111 1001 1010
Vermenigvuldigen Met instructies: Shift and ADD Geheel in hardware met adders
Vermenigvuldigen op de basisschool 1321 2101 00000 132100 2642000 2775421
Vermenigvuldigen op de basisschool 1101 0101 00000 110100 0000000 01000001
De ALU/Adder kan maar twee getallen tegelijk optellen! Vermenigvuldigen De ALU/Adder kan maar twee getallen tegelijk optellen! 1101 0101 00000 01101 110100 1000001 0000000 01000001
Shift-instructie a 11000110 01100011 a + a = 2 * a = shift_left a
Shift-instructie a 11000110 01100011 a + a = 2 * a = shift_left a 10001100 Shift left a
Shift en Add-instructies 1101 0101 00000 01101 110100 1000001 0000000 01000001
Wallace Tree (zie hoofdstuk 6)
Huiswerk Lezen Chapter 2.1, 2.2 en 2.4. Paragraaf 2.21: Excercise 2.2; Gebruik de SIM-PL rekenmachine II i.p.v. de MIPS Lezen Chapter 3.1 t/m 3.4 Paragraaf 2.11: Excercise 3.1.1, 3.1.2 en 3.2.1.