Gå til innhold

Problemer med regning fra dekadisk til binært.


Anbefalte innlegg

En oppgave i programmerings-boken min ber meg om å gjøre om det dekadiske tallet 10 til binær form. Jeg vet at svaret skal være 1010, men når jeg bruker formelen som er beskrevet i boken får jeg bare 10.

 

1*10^1 + 0*10^0 er regnestykket som jeg har forstått skal bli 1010, men det blir det altså ikke.

Lenke til kommentar
Videoannonse
Annonse

while(tall)
{
 cout << (tall & 1);
 tall >>= 1;
}

edit: den skriver kanskje ut feil vei :p

 

template<typename T> void WriteBin(T tall)
{
 T max = 1 << ((sizeof(T) << 3) - 1);
 while(tall)
 {
   cout << (tall & max);
   tall <<= 1;
 }  
}

Endret av GeirGrusom
  • Liker 1
Lenke til kommentar

Bruk en litt modifisert primtallsfaktorisering, du har følgende to regler:

 

Hvis tallet ditt er delelig på 2, del på 2 og sett 0 som "primtall"

Hvis tallet ikke er delelig på 2, trekk fra 1, del på 2 og sett 1 som "primtall"

 

Eksempel:

 

14 | 0

7 | 1

3 | 1

1 | 1

0

 

Så tallet 14 i 10 tallssystemet er 1110.

  • Liker 1
Lenke til kommentar

Tusen takk! Den algoritmen var genial. :)

 

 

virker som den han fant er motsatt vei. Altså fra binær til desimal.

 

Det kan godt hende min metode var fra binær til desimal, ja. Jeg fortsår rett og slett ikke hva boken prøver å fortelle. Her er utsnittet:

 

Grunntallet i det dekadiske tallsystemet er 10, mens det i det binære tallsystemet er 2. Hvordan kan det stemme at 25 i det dekadiske tallsystemet blir 11001 i det binære? Det ser vi ved å huske at et siffers posisjon bestemmer hvilken potens av grunntallet vi har med å gjøre:

 

25 = 2*10^1 + 5*10^0

11001 = 1*2^4 + 1*2^3 + 0*2^2 + 0*2^1 + 1*2^0 = 25

Endret av Sondre
Lenke til kommentar

Algoritmen din er fra binær ja. Det som er relevant av utdraget ditt er egentlig det siste

 

p><p>

 

Som du ser er algoritmen for å konvertere noe som helt til desimal å legge sammen tallet på en plass multiplisert med verdien til den plassen. F. eks. den andre 1'ern i 11001 ligger på plass chart?cht=tx&chl=2^3.

  • Liker 1
Lenke til kommentar

Den formelen var egentlig helt grei. Den jeg ikke forstod var

 

chart?cht=tx&chl=25=2 \cdot 10^{1} + 5 \cdot 10^{0}

 

Det var den jeg prøvde meg på først som jeg trodde skulle gi riktig svar mtp. desimal til binær, men det gjorde den ikke. Så hvilket utbytte får man egentlig av den? Hva er det man skal fram til?

Endret av Sondre
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...