Matte Diskret - De hela talen
Binära och hexadecimala tal
När vi pratar datorer så handlar det mer om baser såsom 2 och 16. Basen 2 används i det binära talsystemet och basen 16 används i det hexadecimala talsystemet.
Binära tal
I det binära talsystemet används bara siffrorna 1 och 0 där talet ett kan representeras som en tänd lampa och talet 0 som en släckt lampa. Låt oss säga att vi har en lamprad med 8 lampor i. I denna rad skulle talet se ut så här:
Siffran längst till höger har minst betydelse för talets storlek och kallas därför för den minst signifikanta siffran medan den som är längst till vänster har desto mer betydelse för talets storlek och kallas då för den mest signifikanta siffran.
Man kallar varje siffra för en bit och åtta stycken bitar (likt lamporna i bilden) bildar tillsammans en byte
Alltså:
En binär siffra representerar en bit
och
åtta binära siffror bildar en byte
Skriv talet med basen tio.
Precis som vi gjorde när vi skrev om från basen till tio ska vi nu göra med basen 2. Att ett tal har basen två innebär att om vi skulle skriva det talet i utvecklad form skulle vi inte använda oss av tiopotenser utan av “tvåpotenser”.
I talet har första ettan (siffran längst till vänster) plats 7 vilket ger den tvåpotensen (platsnumret minus 1). Nästa siffra, också en etta, har plats 6 vilket ger den en tvåpotensen (6-1=5) osv.
Svar:
För att få ytterligare förståelse för datorer och byte kan vi testa att räkna ut det största talet en byte kan lagra. För att symbolisera det i en bild så innebär det att alla lamporna är tända, dvs. alla siffror är ettor.
Vi får talet
Detta innebär at ten byte kan lagra alla tal från 0 till 255, dock vet vi att datorer är kapabla till att hantera betydligt större tal. Detta löses med hjälp av flera bytes efter varandra där den andra byten lagrar de sista åtta siffrorna i talet och den första byten lagrar den mest signifikanta delen.
Ta till exempel talet . Där hamnar de mest signifikanta siffrorna, 1001, i första byten och de resterande 8 i andra byten.
Skulle vi skriva om talet till basen 10 så skulle vi göra på samma sätt som innan. De minst signifikanta talen i den andra byten skulle få tvåpotenserna 27 till 20. Plats nio, alltså platsen längst till höger i första byten fortsätter ordningsföljden (=plats-1) genom att ha tvåpotensen 28, plats 10 har 29 osv.
Skriva från decimala systemet till det binära
Om vi istället vill omvandla tal från det decimala systemet till det binära så är det mest praktiska sättet att vi beräknar det med hjälp av ett räkneschema, en så kallad algoritm.
Det hela fungerar så att man gör en rad divisioner med basen 2, i detta fall, t.ex. 16/2=8 och sedan 8/2=4 osv tills dess att man får kvoten 0.
Börja med att rita upp en tabell på följande vis:
Tal | Kvot | Rest |
a | a | a |
a | a | a |
a | a | a |
a | a | a |
tabellutfyllnad | tabellutfyllnad | tabellutfyllnad |
a | a | a |
tabellutfyllnad | tabellutfyllnad | tabellutfyllnad |
Låt oss säga att vi ska skriva talet i det binära talsystemet. Vi skriver in 114 under “Tal”:
Tal | Kvot | Rest |
114 | ||
a | a | a |
a | a | a |
a | a | a |
Det hela gick ut på division med 2 så vi delar 114 med 2 och får 57, vilket vi skriver in under “Kvot”. Eftersom divisionen gick jämnt ut så skriver vi 0 under “Rest”.
Tal | Kvot | Rest |
114 | 57 | 0 |
a | a | a |
a | a | a |
a | a | a |
Nu fortsätter vi divisionen genom att dela 57 med 2 och eftersom vi bara räknar med hela tal så skriver vi 28 under kvoten. Men blir ju bara 56, alltså får vi 1 i rest.
Tal | Kvot | Rest |
114 | 57 | 0 |
57 | 28 | 1 |
a | a | a |
a | a | a |
Sedan är det bara att fortsätta tills dess att vi får kvoten 0. 28 delat med 2 blir 14, noll i rest osv. När divisionen är klar så riktar vi vår uppmärksamhet mot kolumnen med resterna. I den kolumnen ser vi nämligen vårt binära tal vi är ute efter, och det utläses nerifrån och upp. Alltså ,den första resten (översta) är den minst signifikanta siffran i talet och den siffra längst ner är den mest signifikanta.
Tal | Kvot | Rest |
114 | 57 | 0 |
57 | 28 | 1 |
28 | 14 | 0 |
14 | 7 | 0 |
7 | 3 | 1 |
3 | 1 | 1 |
1 | 0 | 1 |
Alltså är , vilket vi också kan se om vi tittar på Exempel 1 här på denna sida.
Skriv på binär form det decimala talet
a) b)
a)
Rita upp tabellen och börja dividera med 2. 543 delat med 2 blir 271,5, men vi skriver 271 rest 1 då 271·2=542. Vidare, 271/2 blir 135,5 och vi skriver 135 under “Kvot” och 1 under rest och fortsätter därefter med 135/2 osv.
Tal | Kvot | Rest |
543 | 271 | 1 |
271 | 135 | 1 |
135 | 67 | 1 |
67 | 33 | 1 |
33 | 16 | 1 |
16 | 8 | 0 |
8 | 4 | 0 |
4 | 2 | 0 |
2 | 1 | 0 |
1 | 0 | 1 |
När divisionen är färdig läser vi av rest-kolumnen och ser att
b)
Upprepa samma metod som i a-uppgiften.
Tal | Kvot | Rest |
1207 | 603 | 1 |
603 | 301 | 1 |
301 | 150 | 1 |
150 | 75 | 0 |
75 | 37 | 1 |
37 | 18 | 1 |
18 | 9 | 0 |
9 | 4 | 1 |
4 | 2 | 0 |
2 | 1 | 0 |
1 | 0 | 1 |
Svar: a) b)
Hexadecimala tal
Efter att ha satt sig in i de binära talen så inser vi ganska snabbt att det är svårt att hantera några större decimala tal då de i sin binära form består av många fler siffror. Denna ohanterlighet kan vi undvika genom att istället skriva talen i hexadecimal form, dvs. tal med basen 16. I det hexadecimala talsystemet ingår följande siffror: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 och 15. Men det finns ett smärre problem; vi kan inte skriva ut siffrorna 10-15 eftersom alla tal bygger på ett positionssystem. Ska vi tolka 115 som “ett ett fem” eller “ett femton”? Detta problem har man löst genom att ersätta dessa tal med bokstäver där A motsvarar 10, B motsvarar 11, C för 12 osv upp till 15 som betecknas F.
Precis som med omskrivningar från alla andra talsystem till det decimala används utvecklad form t.ex. talet 4BD blir:
Man brukar även referera till basen sexton med ordet “hex”. Bli alltså inte förvånade om det ibland står istället för
Skriv talet med basen 10.
a) b)
a)
Det vi har gjort här är precis som innan. Sjuan har position 3 i ordningen och multipliceras därför med 162 eftersom det är basen 16 talet är skrivet i och pos3-1=2. Talet adderas sedan till de två andra multiplikationerna nämligen 3·161 då trean är på position 2 och 2·160 då tvåan är på plats 1. Sedan är det bara att addera talen och vi får då talet 1842 i det decimala systemet.
b)
Här upprepar vi samma metod som i a-uppgiften. I detta hexadecimala tal har vi också siffrorna 15 (=F), 10 (=A) och 14 (=E) med, vilka vi bara skriver ut när vi ska räkna på dem. Nian har plats 4, F:et (15) har plats 3, A:et (10) har plats 4 och E:et (14) har plats 1.
Svar: a) b)
Man kan uppfatta det hexadecimala talsystemet som ett smidigare sätt att skriva binära tal eftersom varje hexadecimal siffra motsvarar fyra binära bitar, något vi kommer att upptäcka här nedan.
Vi fortsätter med vårt tal 543 från a-uppgiften i Exempel 2. Där räknade vi ut att .
För att omvandla till det hexadecimala talsystemet så skriver vi siffrorna i talet i grupper om 4 med början från talet slut:
Tanken är att vi nu ska studera varje grupp och skriva den som en hexadecimal siffra. Den “sista” gruppen som tycks ha enbart “10″ är också en fyra-grupp och kan även skrivas “0010″, alltså det finns två nollor framför 10.
Vi skriver om från binärt till decimalt och är detsamma som eftersom det decimala och det hexadecimala har siffrorna 0-9 gemensamt.
Samma princip här, ettan i det decimala är ettan i det hexadecimala.
15 i det decimala motsvaras av F i det hexadecimala.
Vi kan nu konstatera att talet .
För att skriva ett decimalt tal med det hexadecimala talsystemet behöver vi inte ta omvägen via det binära talsystemet. Istället kan vi använda oss av samma algoritm som med det binära, alltså vi delar med basen 16, istället för 2, och får fram kvoter och rester.
Skriv det decimala talet 1250 i hexadecimal form genom
a) att först omvandla talet till binär form
b) en direkt omvandling från det decimala systemet
a)
Tal | Kvot | Rest |
1250 | 625 | 0 |
625 | 312 | 1 |
312 | 156 | 0 |
156 | 78 | 0 |
78 | 39 | 0 |
39 | 19 | 1 |
19 | 9 | 1 |
9 | 4 | 1 |
4 | 2 | 0 |
2 | 1 | 0 |
1 | 0 | 1 |
Det binära talet blir
Vi beräknar fyra-grupperna:
…och får fram att
b)
Vi beräknar Kvot och Rest likt a-uppgiften, men dividerar istället med 16:
Tal | Kvot | Rest | Omvandling av rest |
1250 | 78 | 2 | |
78 | 4 | 14 | |
4 | 0 | 4 |
Vi ser snabbt att när vi översätter siffrorna i resten från decimalt till hexadecimalt så får vi samma tal som i a-uppgiften. Kom ihåg att precis som med det binära så läser vi ut talet nerifrån och upp!
Svar: a) och b)
För att slippa sitta och räkna från det binära till det decimala och sist det hexadecimala så finns det en tabell där man kan se de decimala talens (och de hexadecimala, bara byt ut 10-15 mot A-F) motsvarighet i det binära talsystemet.
Grafräknarfunktioner för kvot och rest
Liksom vissa kalkylprogram så har även din grafräknare funktioner för att kunna beräkna kvot och rest. Hos en TI 83:a och en TI 84:A kallas dessa för iPart() och fPart(). i Part() betyder integer part och anger kvoten i heltal t.ex. iPart(14/5) blir 2, den anger alltså inga decimaler. fPart() betyder fractional part och anger bara decimaldelen av talet dvs. 0,8 eftersom 14/5=2,8. Om du multiplicerar fPart() med 5 så får du 4 vilket också är resten från divisionen 14/5. 5·2=10, 14-10=4. Kvot = 2 och Rest = 4.
Med hjälp av dessa två kan vi enkelt programmera vår grafräknare till att utföra den algoritm vi använder när vi ska skriva om decimala tal till binära eller hexadecimala.
Programmet med förklaring hittas här: Beräkna kvot och rest mellan olika talsystem >>
29 september 2011 @ 21:26
Ett litet skrivfel ang. skriva om från binärt till decimalt, hex. 0001två=både 1hex och Fhex? Men uträkningen är iaf för 1111två.
29 november 2011 @ 0:00
orka bry sig
31 mars 2015 @ 14:21
[...] du vill veta mer finns det en spännande sida här som visar en algoritm som förklarar hur en kan gå från decimala tal till binära [...]