Grimnar_ Skrevet 15. november 2006 Del Skrevet 15. november 2006 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. 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 Lenke til kommentar
Shell Skrevet 15. november 2006 Del Skrevet 15. november 2006 (endret) 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 15. november 2006 av Shell Lenke til kommentar
Grimnar_ Skrevet 15. november 2006 Forfatter Del Skrevet 15. november 2006 Det er det som er problemet ja... jeg får msb til høyre selv om jeg bytter tellerettning Lenke til kommentar
extr Skrevet 15. november 2006 Del Skrevet 15. november 2006 (endret) 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 15. november 2006 av extr Lenke til kommentar
Shell Skrevet 15. november 2006 Del Skrevet 15. november 2006 (endret) 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 15. november 2006 av Shell Lenke til kommentar
Giddion Skrevet 15. november 2006 Del Skrevet 15. november 2006 Annen post om samme emne Lenke til kommentar
Grimnar_ Skrevet 15. november 2006 Forfatter Del Skrevet 15. november 2006 takker så mye Shell... det hjalp veldig mye. Lenke til kommentar
Orjanp Skrevet 16. november 2006 Del Skrevet 16. november 2006 Her er en ferdig iota funksjon. Den fungerer veldig fint. Ørjan... Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå