"denne lille test kode, skulle gerne retunere 2, det gør den også." prøv at teste en gang til. Jwg vil vædde på at den funktion returnere tallet 4.
for at sætte flere bit i sådan et tal bruger du 'bitwise or' operatoren | (en enklet lodret streg.
fx: { int x = 0; x = 1<<2; x = x | (1<<1); // de bit x allerede indeholder og også den bit der kommer af 1<<1 return x; } resultatet skulle gerne blive 6 ...00000110
dl >> husk på at når det er med computere tælles der næsten altid op fra 0, man starter ikke med 1.
så der du skriver "men hvordan får jeg den til at retunere 3, altså bit på plads 1 og 2 er sat." skulle der hellere stå: "men hvordan får jeg den til at retunere 3, altså bit på plads 0 og 1 er sat." og det kunne så gøres med { int x = 0; x = 1<<1; x = x | (1<<0); // de bit x allerede indeholder og også den bit der kommer af 1<<0 return x; }
det er tale om bit. en int. Har = 00000000000000000000000000000000 ØNSKER = 00000000000000000000000000000011 ØNSKER også EKSEMPEL = 0000000000000000000000000001011
jeg ved denne kode, kan sætte de 3 bit. x = 1<<1; x = 1<<2; x = 1<<4;
mit resultat skal være = 0000000000000000000000000001011
men det virker ikke. det virker hvis jeg køre kunne linie: x = 1<<1 .. så får jeg 1 hvis jeg høre x=1<<1 og x=1<<2 ... så får jeg 2, men jeg skulle have 3. Hvad går der galt?
når du siger int x = 1; // får du 00000000000000000000000000000001 x = x << 1; // skubber bitsene i x een plads tilvenstre // du får 00000000000000000000000000000010 x = x << 4; // skubber bitsene i x fire pladser tilvenstre // du får 00000000000000000000000000010000 osv. { // ØNSKER = 00000000000000000000000000000011 int x = 1<<1; // 00000000000000000000000000000010 int y = 1<<0; // 00000000000000000000000000000001 return x | y; // 00000000000000000000000000000011 }
{ // ØNSKER = 00000000000000000000000000001011 int z = 1<<3; // 00000000000000000000000000001000 int x = 1<<1; // 00000000000000000000000000000010 int y = 1<<0; // 00000000000000000000000000000001 return x | y | z; // 00000000000000000000000000001011 }
| er kun et 'or' tegn (operator) ingenting bliver vendt hverken før eller efter
jeg tror du blander det sammen med en lidt misforstået forklaring på enten & ('and' operator) eller ^ (xor operator). De har hver deres regel for hvordan to bitmønstre kombineres sammen.
det svar jeg har fået fra > jakoba virker. og han har fået de point.
hvad prøver jeg at opnå.
Min lære er ved at lave et soduku program, som gemmer de mulige result i en int, ved at se på fx, bit 1's plads, hvis den er sat så kan det være en 1'er.
så jeg prøver at rode lidt med det, så jeg kan blive bedre og få en større viden.
//dl
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.