Tema - Binära tal Teori ▪ Binära talsystemet Det binära systemet som är datorernas positionssysten bygger på endast två siffror, talen 0 och 1. Dessa siffror kallas ofta för bitar eller bits. Låt oss se hur man skriver ett godtyckligt tal t ex 3765 som binärt tal. Precis som positionerna i decimalsystemet är tiopotenser av 10 så är positionerna i det binära systemet potenser av 2. 212 211 210 29 28 27 26 25 24 23 22 21 20 4096 2048 1024 512 256 128 64 32 16 8 4 2 1 1 1 1 1 1 1 1 1 Beräkningen av det binära talet kan utföras genom successiva subtraktioner: 3765 – 2048 (= den högsta potensen som ger positiv subtraktion med 3765) = 1717; 1717 – 1024 = 693; 693 – 512 = 181; 181 – 128 = 53; 53 – 32 = 21; 21 – 16 = 5; 5 – 4 = 1; 1 – 1 = 0 tills subtraktion faller ut med noll. Alltså är 3765 = 2048 + 1024 + 512 + 128 + 32 + 16 + 4 + +1 = 1∙211 + 1∙210 + 1∙29 + 0∙28+ 1∙127 + 0∙26 + +1∙25 + 1∙24 + 0∙23 + 1∙122 + + 0∙21+ 1∙20 = 111010110101 i basen 2. Låt oss se hur man skriver ett godtyckligt tal t ex 69626 som hexadecimalt tal. Positionerna i det hexadecimala systemet beror på potenser av 16. I detta system behövs nya tecken, tecknen inom parentes, för talen 10 (=A), 11 (=B), 12 (=C), 13 (=D), 14 (=E) och 15 (=F). 165 164 163 162 161 160 1048576 65536 4096 256 16 1 1 0 F F A 69626 – 65536 = 4090; 4090 – 15∙256 = 250; 250 - 15∙16 = 10 , 10 – 10∙1 = 0. Alltså är 69626 10 = (10FFA) 16 Binära tal - 1 Teori ▪ Hur lagras talen i en dator Lagring av tal i datorn sker i form av binära tal. Varje binärt tal kallas ett ord. Ordlängden av talet 110 011 är alltså sex bitar. De vanligaste ordlängderna som datorer arbetar med är 8, 16 eller 32 bitar. De första datorerna arbetade ofta med åtta bitars ordlängd som kom att kallas byte. 1 byte = 8 bits 1 kilobyte (1 kB) = 210 = 1024 byte ≈ 1 tusen byte 1 megabyte (1 MB) = 220 ≈ 1 miljon byte 1 gigabyte (1GB) = 230 ≈ 1 miljard byte Eftersom 216 = 65536, kan man med 16-bitars ordlängd lagra talen 065535 i en dator. Då man även vill kunna lagra negativa tal så ryms talen –32768 till 32767 i ett 16 bitars ord. Talet 32767 klarar sig dock med 15 bitar. Detta innebär att MSB, den första siffran, för talen 0, 1, 2, 3……32767 är 0. Talet 123 lagras som 0 000 000 001 111 011. Man har bestämt att MSB (=most significant bit) skall vara 1 då talet är negativt. Man får det negativa talet som tvåkomplementet (förklaras på nästa sida) till motsvarande positiva tal. Binära tal - 2 Modell ▪ Räknesätten med binära tal Talet 5 skrivs binärt Negera, byt ut alla ettor mot nollor och tvärtom Addera 1 Tvåkomplementet till 5 dvs talet -5 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 Addera de två binära talen, i de blå raderna till vänster. Eftersom 1+1=10 1+1+1=11 får vi: 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 1 Utför subtraktionen 8 – 7. Vi genomför detta som additionen 8 + (-7) 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 8= 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 7= 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 Negera talet 7 + 1 Addera talet 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 Tvåkomplementet till 7 8 – 7 blir addition av de två 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 blå raderna ovan. Subtraktion av 8 med 7 blir addition av de två blå raderna ovan. Eftersom vi arbetar med 16-bitars ord så får inte additionen innehålla mer än 16 siffror. Den 17:e siffran, längst till vänster i svaret, som är en 1:a kallas spillsiffra. Multiplikation Vad blir 11110011 ⋅ 101? (Vilka är de två talen?) Utför multiplikationen Tänk på att 1⋅0=0⋅1=0 och att 1⋅1=1 och att 0⋅0=0 Multiplikationen ger svaret på sista raden. (Vilket tal?) 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 • 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 1 Binära tal - 3 G1 a) b) Vilka tal i decimalsystemet får vi från de binära talen 00100111 10101010 (Observera att detta är ett negativt heltal! Varför?) G2 Utföra följande beräkningar genom att först skriva om talen till binära tal 11 + 9 b) 12 – 5 c) 123⋅11 a) V3 a) Facit Ovan har vi studerat binära tal som är heltal. Vilka tal i decimalsystemet borde svara mot: 00000010,1 2 b) 00000111,11 2 c) 000000001,001 2 G1 a) b) Vilka tal i decimalsystemet får vi från de binära talen (00100111) 2 = 39 10101010) 2 = –86 V3 Ovan har vi studerat binära tal som är heltal. Vilka tal i decimalsystemet borde svara mot: 10,1 2 = 2,5 b) 111,11 2 = 7,75 c) 1,001 2 = 1,125 a) Binära tal - 4