Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Huiswerkvragen: Exacte vakken (https://forum.scholieren.com/forumdisplay.php?f=17)
-   -   [IN] Vraag binair, decimaal en hexadecimaal rekenen (https://forum.scholieren.com/showthread.php?t=1850123)

567 02-01-2012 11:49

Vraag binair, decimaal en hexadecimaal rekenen
 
Kan iemand mij misschien helpen met de volgende twee vragen? Ik kom er echt niet uit.

Schrijf het binaire getal http://img38.picoodle.com/i512/1_989_u0.png als decimaal getal.

Schrijf het decimale getal http://img38.picoodle.com/i512/1_aa1_u0.png als octaal getal.

Alvast bedankt!

cartman666 02-01-2012 13:46

Een getal bestaat uit cijfers die op bepaalde posities staan. Het is handig om die posities te nummeren van rechts naar links, te beginnen met 0.
Voorbeeld: Het getal 352 heeft drie cijfers, met op positie nul een 2, op posisite één een 5, en op positie twee een 3.
Om te bepalen wat de waarde van dit getal is in het tien tallig stelsel kan je de volgende som uitvoeren:
2*10^0 + 5*10^1 + 3*10^2 = 352 in het tientallig stelsel (goh..)
Je ziet dat de cijfers terug komen als factoren in de som, en de posities waarop die cijfers staan gebruikt worden als exponenten. De tien van het tientallig stelsel komt terug in de grondtallen.
Om de waarde van hetzelfde getal in een achttallig stelsel te bepalen krijg je deze som:
2*8^0 + 5*8^1 + 3*8^2 = 234 in het tientallig stelsel

Nu jouw som:
Je binaire getal heeft acht posities. De cijfers op die posities vul je dus van links naar rechts in:
0*2^0 + 1* 2^1 + 1*2^2 + 0* 2^3 + 0*2^4 + 1* 2^5 + 0*2^6 + 1* 2^7 = 166


Voor het omrekenen naar een octaal getal is er misschien een eenvoudigere methode, maar dit werkt in elk geval:
Eerst kijken naar de grootste macht van acht die in het getal past: 8^3=512, 8^2=64. Dat is dus 64, dus je getal heeft drie cijfers.
Dan kijken hoevaak 64 in 301 past: 4*64=256, 5*64=320 (dus positie twee is 4)
301-256=45
Weer kijken naar de grootste macht van acht die in het nieuwe getal (in dit geval 45) past: 8^2=64, 8^1=8
8*5=40, 8*6=48. (dus postie één is 5)
45-40=5
Weer kijken naar de grootste macht van acht die in het nieuwe getal (in dit geval 5) past:
8^1=8, 8^0=1
1*5=5 (dus postie nul is 5)
Resultaat: 301 in tientallig stelsel = 455 in achttallig stelsel

567 02-01-2012 14:46

Het is glashelder nu, ontzettend bedankt!

567 02-01-2012 14:52

Wacht, één ding is me toch nog niet helemaal duidelijk. Wat heeft het feit dat die 301 is geschreven in een tientallig stelsel, dan precies van invloed op de berekening? Want die 10 staat er vast niet voor niets.

cartman666 02-01-2012 15:32

Wat je meestal doet is je getallen eerst omrekenen naar het tientallig stelsel omdat we zelf gewend zijn in dat stelsel te rekenen. Als 301 geschreven was in het twaalftallig stelsel bij wijze van spreke, dan zou je eerst
1*12^0 + 0*12^1 + 3*12^2 = "433 in het tientallig stelsel" hebben gedaan.
Maar omdat het al in tientallig stond is dat niet nodig.
1*10^0 + 0*10^1 + 3*10^2 = 301

567 02-01-2012 16:29

Ah zo, duidelijk. Dank!

Rob 03-01-2012 15:31

Andere leuke tip: zowel acht als zestien zijn machten van twee, en die kennis kan je gebruiken om gemakkelijk van binair naar octaal naar hexadecimaal te gaan. Zie hieronder:

0000 - 000 - 0x0
0001 - 001 - 0x1
0010 - 002 - 0x2
0011 - 003 - 0x3
0100 - 004 - 0x4
0101 - 005 - 0x5
0110 - 006 - 0x6
0111 - 007 - 0x7
1000 - 010 - 0x8
1001 - 011 - 0x9
1010 - 012 - 0xA
1011 - 013 - 0xB
1100 - 014 - 0xC
1101 - 015 - 0xD
1110 - 016 - 0xE
1111 - 017 - 0xF

Het binaire getal 111101110110110011100 is dus redelijk makkelijk om te zetten naar hexadecimaal door het getal in groepen van vier te verdelen en de bijbehorende waarden te pakken:
0001 1110 1110 1101 1001 1100 = 1EED9C

Voor octaal verdeel je het binaire getal in groepen van drie:
111 101 110 110 110 011 100 = 7566634

Spoiler want vaag omschreven, maar misschien wel leuk:
Spoiler

cartman666 04-01-2012 15:03

Volgens mij ontbreekt er ergens nog iets in de formule uit de spoiler, want van n maak je nergens gebruik. Zou je het voorbeeld (301 van tientallig naar octaal) eens kunnen voordoen?
Ik kwam tot hier:
p=301, n=10, m=8
floor(p / m) = floor(301 / 8) = 37
floor(floor(301 / 8) / 8) = 4
Dan heb je het eerste getal. Maar hoe ga je nu zonder quotiënten aan de volgende waarden komen?

Ik zou dan doen:
301-4*8*8=45
floor(45/ 8) = 5
45-5*8=5
Maar dan is niet meer met quotiënten.


Alle tijden zijn GMT +1. Het is nu 20:36.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.