Avatar billede odsgaard Praktikant
10. november 2009 - 19:40 Der er 6 kommentarer og
1 løsning

Tjekke om x = 2^n

Hej

Jeg har brug for lidt hjælp til at konstruere en 'betingelse'

Betingelsen skal validere 'true' hvis et givet tal x = 2^n - altså x skal være {2, 4, 8, 16, 32 .... }

På forhånd tak
Brian
Avatar billede erikjacobsen Ekspert
10. november 2009 - 19:46 #1
Du kan evt. tælle antal bits i tallet med en af metoderne herfra: http://dotnetperls.com/bitcount-1
og hvis der kun er een bit, så er det en to-potens.
Avatar billede arne_v Ekspert
10. november 2009 - 19:57 #2
if((x & (x - 1)) == 0)
Avatar billede arne_v Ekspert
10. november 2009 - 19:59 #3
Hvis x=0 er en mulighed og skal returnere false, saa skal der et special test til for det.
Avatar billede bitmatic Nybegynder
10. november 2009 - 20:16 #4
private static bool IsPowerOfTwo(int x)
{
  if (x == 0)
    return false;
  return (x & (x - 1)) == 0;
}
Avatar billede odsgaard Praktikant
10. november 2009 - 20:34 #5
Tak for hurtigt svar ...

Jeg kan ikke lige gennemskue hvorfor det virker, men det virker fint :)

Smid lige et svar for point ...
Avatar billede bitmatic Nybegynder
10. november 2009 - 23:12 #6
går ud fra, at arne tager pointene....
Avatar billede arne_v Ekspert
11. november 2009 - 01:03 #7
Et svar fra mig.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester