Positionssystemet och olika talbaser: Skillnad mellan sidversioner
Hoppa till navigering
Hoppa till sök
Hakan (diskussion | bidrag) |
Hakan (diskussion | bidrag) |
||
(54 mellanliggande sidversioner av 2 användare visas inte) | |||
Rad 1: | Rad 1: | ||
__NOTOC__ | |||
= Teori = | |||
{{malruta | Talbaser | |||
Du kommer att lära dig om binära tal och andra talbaser samt hur man omvandlar mellan dem. | Du kommer att lära dig om binära tal och andra talbaser samt hur man omvandlar mellan dem. | ||
}} | }} | ||
{{ | === Decimala talsystemet === | ||
{{ | |||
'''Decimala talsystemet''' (tiosystemet) är ett positionssystem som baseras på talet 10 och därmed använder 10 olika siffror (det normala antalet fingrar), 0–9. Sedan låter man siffrans position bestämma vilken 10-potens som siffran skall multipliceras med. På detta sätt blir talet | |||
: 304 = 3·10<sup>2</sup> + 0·10<sup>1</sup> + 4·10<sup>0</sup>. | |||
''[http://sv.wikipedia.org/w/index.php?title=Decimala_talsystemet CC från Wikipedia]'' | |||
=== Binära talsystemet === | |||
Det '''binära talsystemet''' är en representation för tal som har talbasen två. Det betyder att enbart två olika siffror används, ett och noll. Binära tal används praktiskt taget av alla datorer eftersom de använder digital elektronik och boolesk algebra (eller ''binär algebra'' som det också kallas). I Europa var Juan Caramuel y Lobkowitz Caramuel först med att beskriva det binära talsystemet som han då kallade Dyadik. Medan Gottfried Leibniz gjorde det känt för en bredare publik. Talsystemet upptäcktes dock långt tidigare av den forntida matematikern Pingala. | |||
Det binära talsystemets talföljd består bara av två siffror, '''0''' och '''1'''. | |||
Nästa tal är det, av de talen som kan skrivas med ettor och nollor, som kommer näst i sifferraden. | |||
Så talen blir: | |||
: <math>0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111, 10 000 ~o.s.v </math> | |||
De gamla egyptierna använde det binära talsystemet för att skriva bråktal i decimalform. De använde dock inte ettor och nollor, utan de använde sig av en symbol kallad 'Horus öga'. Olika delar av symbolen motsvarade olika positioner på höger sida om kommatecknet. Om just den delen ritades ut motsvarade det en etta på den positionen, om den utelämnades motsvarade det en nolla. | |||
Precis som i det decimala talsystemet är den högra siffran minst signifikant. Med enbart den siffran kan talet 0 och 1 beskrivas. För att beskriva talet 2 måste en ny siffra skrivas till vänster om den första, det vill säga '10', varpå talet 3 följer representerat som '11'. Detta fortgår på samma maner ju högre upp man behöver komma. | |||
=== Talsystem med olika baser === | |||
Det finns flera olika talsystem som är uppbyggda med andra antal siffror än det binära talsystemet och det decimala talsystemet. Alla olika talsystem har en bas som anger hur många siffror vi får använda i just det talsystemet. Om vi tar ett talsystem med basen 5, då får vi bara använda fem siffror (0, 1, 2, 3 och 4). Precis som med det decimala talsystemet (som har basen tio) och det binära talsystemet (som har basen två) så är det positionerna på ett tal som anger hur mycket en siffra är värd. Alla dessa talsystem med olika baser är också positionssytem. | |||
Om vi har talet 343 skrivet i basen fem, kan vi skriva det som 343<sub>5</sub> för att förtydliga att vi menar just basen fem. Vill vi skriva om talet till bas tio gör vi följande: | |||
343<sub>5</sub> = (3⋅5<sup>2</sup> + 4⋅5<sup>1</sup> + 3⋅5<sup>0</sup>)<sub>10</sub> = (3⋅25 + 4⋅ 5 +3⋅1)<sub>10</sub> = 98<sub>10</sub> | |||
Ett tal med basen fem menar då att positionerna, från höger till vänster, betyder ental, femtal, tjugofemtal, hundratjugofemtal, och så vidare. | |||
''Detta stycke kommer från [https://www.matteboken.se/lektioner/matte-1/tal/talsystem Matteboken.se]'' | |||
= Exempel = | |||
==== Omvandla binärt till decimalt==== | |||
Exempel på hur man kan skriva för att konvertera ett binärt tal till decimaltal: | |||
{{exruta|'''Omvandla binärt till decimalt''' | |||
Om det binära talet är <math> 10101101</math> så är det decimala talet | |||
: 1·2<sup>7</sup> + 0·2<sup>6</sup> + 1·2<sup>5</sup> + 0·2<sup>4</sup> + 1·2<sup>3</sup> + 1·2<sup>2</sup> + 0·2<sup>1</sup> + 1·2<sup>0</sup> {{=}} | |||
: 128 + 0 + 32 + 0 + 8 + 4 + 0 + 1 {{=}} 173 | |||
}} | |||
Exempel på hur man kan skriva för att konvertera ett tal i basen 5 till decimaltal. | |||
{{exruta| '''Från basen 5 till 10''' | |||
Talet 32 är i basen 5. Skriv talet på basen 10. | |||
: <math>32_5 = 3 \cdot 5^1 + 2 \cdot 5^0 = 3 \cdot 5 + 2 \cdot 1 = 17_{10} </math> | |||
}} | |||
=== Omvandla decimalt till binärt === | |||
{{exruta| '''Decimalt till binärt''' | |||
Skriv talet 137<sub>10</sub> på binär form. | |||
Du ska skriva talet 137 som en summa av några av termerna | |||
: 128, 64, 32, 16, 8, 4, 2, 1 | |||
: 2<sup>7</sup>, 2<sup>6</sup>, 2<sup>5</sup>, 2<sup>4</sup>, 2<sup>3</sup>, 2<sup>2</sup>, 2<sup>1</sup>, 2<sup>0</sup> | |||
: 137 {{=}} 128 + 8 + 1 {{=}} 1 0 0 0 1 0 0 1<sub>2</sub> | |||
}} | |||
=== Hexadecimala talsystemet === | |||
{{exruta| '''Omvandla från hexadecimalt till basen fem''' | |||
Skriv talet 3F<sub>16</sub> på basen fem. | |||
Börja med att översätta till basen tio. | |||
: 3F<sub>16</sub> {{=}} 3*16 + 15*1 {{=}} 48 + 15 {{=}} 63<sub>10</sub> | |||
Gör nu om till basen fem. | |||
I tabellen nedan har vi prövat oss fram för att finna lämplig positionssiffra genom att börja nedifrån. Vi ser nu att '''223<sub>5</sub>''' {{=}} 63<sub>10</sub> {{=}} 3F<sub>16</sub> | |||
}} | |||
{| class="wikitable" | |||
|- | |||
! potenser av 5!! bas 5!! positionssiffra!! delsumma | |||
|- | |||
| 5<sup>0</sup>|| 1|| 3|| 3 | |||
|- | |||
| 5<sup>1</sup>|| 5|| 2|| 10 | |||
|- | |||
| 5<sup>2</sup>|| 25|| 2|| 50 | |||
|} | |} | ||
= Aktivitet = | |||
=== | === Bekanta dig med tal skrivna på olika baser === | ||
* Hur skriver man ett tal på en viss bas? | * Hur skriver man ett tal på en viss bas? | ||
Rad 19: | Rad 113: | ||
* Testa apparna nedan | * Testa apparna nedan | ||
I teoriavsnittet nedan ska vi gå närmare in på hur man konverterar och skriver tal på olika baser. | |||
=== Binära tal === | === Binära tal === | ||
Rad 35: | Rad 123: | ||
</html> | </html> | ||
<br /> | <br /> | ||
= GeoGebra = | |||
A little tool to show an integer in all important bases quickly: Edit any of the four textfields and press enter - the three remaining Numbers will be converted. <br /> | A little tool to show an integer in all important bases quickly: Edit any of the four textfields and press enter - the three remaining Numbers will be converted. <br /> | ||
Rad 43: | Rad 133: | ||
https://www.geogebra.org/m/dDQCBAN3 | https://www.geogebra.org/m/dDQCBAN3 | ||
= Pythonprogram = | |||
[[Kategori:Python]] [[Kategori:Ma1c]] [[Kategori:Aritmetik]] | |||
{{python|[[Python|Python-hjälp]] och [https://wikiskola.se/index.php?title{{=}}Kategori:Python Fler uppgifter]}} | |||
{{malruta| '''Kom igång med programmering i matematiken.''' | |||
Målet är att du ska använda program för att utföra matematiska beräkningar. | |||
Du bör testa att modifiera algoritmen så att dina beräkningar blir mer effektiva. | |||
Målet är inte att du ska lära dig programmering på matematiklektionen men det är oundvikligt att du ändå lär dig lite Python-kod. | |||
}} | |||
Det här är ett förhållandevis komplicerat program för att komma så pass tidigt i kursen men vi testar det i alla fall och tittar på koden för att lära oss mer. | Det här är ett förhållandevis komplicerat program för att komma så pass tidigt i kursen men vi testar det i alla fall och tittar på koden för att lära oss mer. | ||
== Omvandla till binärt med ett Pythonprogram == | |||
{{uppgruta| '''Binäromvandling''' | |||
# Testa programmet med några olika tal. | |||
# Gå igenom koden och läs kommentarerna. Hur fungerar programmet? | |||
}} | |||
{{clear}} | {{clear}} | ||
== | == Python-koden == | ||
<pre> | |||
tal = int(input("Ange heltal att omvandla till binärt: ")) | |||
bas2 = [] | |||
if tal != 0: | |||
bas2h = '' | |||
while tal > 0: | |||
#Bilda biten med den högsta bitvikten | |||
bit = int(tal % 2) | |||
#Dividera bort denna | |||
tal = tal // 2 | |||
#Lägg in den beräknade biten i en lista | |||
bas2.append(bit) | |||
#Vänd på listan | |||
#Biten med den högsta vikten lades ju in först | |||
#Detta är inte nödvändigt om man väljer att skriva ut listan baklänges (nedan) | |||
bas2.reverse() | |||
print("Talet blir ", end="") | |||
for bit in bas2: | |||
#end="" gör så att raden inte bryts och att inget skrivs ut mellan tecknen. | |||
print(bit, end="") | |||
print(" i bas 2.") | |||
: | #Om du inte vänder på listan: | ||
#for i in range(len(bas2) - 1, -1, -1): | |||
#print(bas2[i], end="") | |||
</pre> | |||
Uppgiften är inspirerad av Malmö stads [https://sites.google.com/skola.malmo.se/programmeringsfortbildning/kursmaterial/tr%C3%A4ff-5?authuser=0 Matematisk programmering i Python] | |||
= Lär mer = | |||
{| wikitable align=right | |||
|- | |||
| {{sway | [https://sway.com/ZeXlAKGoAr0CrRwB?ref{{=}}Link Talbaser] }}<br /> | |||
{{gleerups| [https://gleerupsportal.se/laromedel/exponent-1c/article/51e05b19-539b-4fce-a418-8ac8e8858d33 Romerska tal, mm] }}<br /> | |||
{{matteboken |[https://www.matteboken.se/lektioner/matte-1/tal/talsystem Talsystem] }}<br /> | |||
|} | |||
=== NCM - Tankeläsning med binära tal === | |||
[http://ncm.gu.se/pdf/namnaren/3234_08_4.pdf NCM-artikel - Tankeläsaren] Intressant för läraren men kul trick för alla som vill. | |||
=== UR-teori och övningar === | |||
[https://www.ur.se/mb/pdf/Texter/Binara_talsystem.pdf UR-pdf] | |||
=== Decimaler och förkortningar === | |||
{{exruta| | |||
Visa att <math>0,375 = 3/8 </math> | |||
Skriv talet som tusendelar i bråkform. | |||
: <math> 0,375 = \frac{375}{1000} = \frac{75}{200} = \frac{15}{40} = \frac{3}{8} </math> | |||
}} | |||
=== Horners metod === | |||
En intressant egenskap i det binära talsystemet är att en multiplikation med två erhålles genom att helt enkelt skifta alla siffror en plats åt vänster och sätta dit en nolla. Denna egenskap ger följande intressanta variant av Horners metod: För att enkelt beräkna det decimala värdet av ett binärt tal i huvudet behöver du bara läsa talet från vänster och multiplicera varje delsumma med två; om den binära siffran är en etta så addera dessutom en etta till summan. Man börjar med summan 0. Med samma exempelsträng som ovan (10101101) blir det så här: | |||
'''0'''·2+1=1 , '''1'''·2=2, '''2'''·2+1=5, '''5'''·2=10, '''10'''·2+1=21, '''21'''·2+1=43, '''43'''·2=86, '''86'''·2+1=173 | |||
''[http://sv.wikipedia.org/w/index.php?title=Binara_talsystemet CC från Wikipedia]'' | |||
== | === Binärkomma === | ||
Om ett '''binärkomma''' finns närvarande så representerar siffrorna till höger om det en mot höger ökande negativ tvåpotens. Exempel: | |||
= | 11,001<sub>2</sub> = 1·2<sup>1</sup> + 1·2<sup>0</sup> + 0·2<sup>-1</sup> + 0·2<sup>-2</sup> + 1·2<sup>-3</sup> = 2 + 1 + 0 + 0,125 = 3,125<sub>10</sub></sup> | ||
Vid representation av tal med decimaler är det dock idag mycket vanligare att använda IEEE:s flyttalsrepresentation | |||
=== Wolfram === | === Wolfram === | ||
Rad 110: | Rad 247: | ||
<iframe scrolling="no" title="" src="https://www.geogebra.org/material/iframe/id/jyk3M9kw/width/1015/height/556/border/888888/smb/false/stb/false/stbh/false/ai/false/asb/false/sri/false/rc/false/ld/false/sdz/false/ctl/false" width="1015px" height="556px" style="border:0px;"> </iframe> | <iframe scrolling="no" title="" src="https://www.geogebra.org/material/iframe/id/jyk3M9kw/width/1015/height/556/border/888888/smb/false/stb/false/stbh/false/ai/false/asb/false/sri/false/rc/false/ld/false/sdz/false/ctl/false" width="1015px" height="556px" style="border:0px;"> </iframe> | ||
</html> | </html> | ||
== Exit ticket == | == Exit ticket == | ||
Exit ticket: Talbaser | Exit ticket: Talbaser | ||
<headertabs /> |