Gå til innhold

Fra int til binær


Anbefalte innlegg

Hei!

Jeg sliter litt med en oppgave jeg har fått. Skal skrive ut bit, men jeg får bare bitene til å komme i feil rekkefølge. :hrm:

Brukeren skrive inn en int input som jeg skal skrive ut binært.

 

char *Binary::msbLeft()
{
char* bitL = new char;

for(int i = 0; i < 16; i++)
{
 if(((input >> i) & 1) == 1) // det er denne saken jeg vil forandre
 {
 	bitL[i] = '1';
 }
 else
 {
 	bitL[i] = '0';
 }
 bitL[16] = '\0';
}
return (bitL);
}

 

Hjelp hadde vært :thumbup:

Lenke til kommentar
Videoannonse
Annonse

Hva med denne:

char* Binary::msbLeft()
{
   char* bitL = new char[17];

   for ( int i = 15; i >= 0; i-- )
       bitL[i] = '0' + ( ( input & 1 << i ) != 0 ? 1 : 0 );
   bitL[16] = '\0';

   return (bitL);
}

Ok, du vil vel ha msb til venstre i stringen? fra 15 til 0 istedenfor 0 til 15 da tror jeg.

Endret av Shell
Lenke til kommentar

Tja, kan gjøres slik:

 

void int_to_binary(int i)
{
if(i == 1 || i == 0)
 cout << i;
else
{
 int_to_binary(i / 2);
 cout << i % 2;
}
}

 

Men det blir kanskje ikke riktig å gjøre det slik i ditt tilfelle?

 

Hmm, denne har jeg ikke sett før Shell, hva skjer her? :)

 

( ( input & 1 << i ) != 0 ? 1 : 0 )

 

input & 1 << i ?

Endret av extr
Lenke til kommentar

edit: ok, denne funker fint og ser bedre ut enn den jeg laget over:

char* Binary::msbLeft()
{
  char* bitL = new char[17];

   for ( int i = 0; i < 16; i++ )
       bitL[i] = '0' + ( input >> 15-i & 1 );
   bitL[16] = '\0';

  return (bitL);
}

 

Hmm, denne har jeg ikke sett før Shell, hva skjer her? :)

 

( ( input & 1 << i ) != 0 ? 1 : 0 )

 

input & 1 << i ?

7291931[/snapback]

Tror den er riktig, du kan også skrive den slik:

#define BIT( num ) ( 1 << num )
( ( input & BIT( i ) ) != 0 ? 1 : 0 )

Vil returnere 1 om BIT( x ) er satt i input, ellers 0. Men litt slitsomt å gjøre det slik fant jeg ut (se løsning over i samme post).

Endret av Shell
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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...