[logica] bits tellen

Pagina: 1
Acties:

  • ajslaghu
  • Registratie: Oktober 2000
  • Laatst online: 23-08 12:20
Goedemorgen,


ik wil het aantal bits in een byte nou ja , unsigned long tellen;

Dus als ik het volgende bitword heb:
0000000011111111000000000000000000000000000000000000000000000b;
Moet het antwoord 8 zijn;

Oja, ik weet hoe ik een for loop schrijf alleen ik heb als dit mogelijk is i.v.m. performance een logische & ~^ | operatie want het moet allemaal nogal snel gaan.

Als je het absurde aanneemt, kan je het tegenover gestelde bewijzen ??


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

je weet hoe je een bepaalde bit kunt testen? Dan kun je toch ook gewoon met een loopje alle bits afgaan en ze testen?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Voor 8 bit :
v = (v & 0x55) + ((v >> 1) & 0x55);
v = (v & 0x33) + ((v >> 2) & 0x33);
return (v & 0x0f) + ((v >> 4) & 0x0f);


voor 32 bit integer:
#define g31 0x49249249ul // = 0100_1001_0010_0100_1001_0010_0100_1001
#define g32 0x381c0e07ul // = 0011_1000_0001_1100_0000_1110_0000_0111

v = (v & g31) + ((v >> 1) & g31) + ((v >> 2) & g31);
v = ((v + (v >> 3)) & g32) + ((v >> 6) & g32);
return (v + (v >> 9) + (v >> 18) + (v >> 27)) & 0x3f;


Welkom in de wereld van de bit-trucs :)

  • ajslaghu
  • Registratie: Oktober 2000
  • Laatst online: 23-08 12:20
het probleem is dat als ik een for loop doe dat er een stop conditie is die getest moet worden, en daar hebben we effe geen tijd voor.
De CPU probeert uitereerd vooruit te werken door haar pipelines maar overspelbaar gedrag heeft ze een hekel aan want dan kan ze niet vooruit werken.

[ Voor 1% gewijzigd door ajslaghu op 20-02-2003 11:19 . Reden: typo ]

Als je het absurde aanneemt, kan je het tegenover gestelde bewijzen ??


  • ajslaghu
  • Registratie: Oktober 2000
  • Laatst online: 23-08 12:20
Wow led dit soort shit bedoel ik. Kan je ook uitleggen hoe het werkt zodat ik het kan omzetten naar unsigned 64's?

Als je het absurde aanneemt, kan je het tegenover gestelde bewijzen ??


  • madwizard
  • Registratie: Juli 2002
  • Laatst online: 26-10-2024

madwizard

Missionary to the word of ska

Nog wat pagina's:
Population count of a 32-bit register (met uitleg), Source code for low level binary functions (van alles en nog wat).
In AMD's x86 code optimization guide (22007) staan ook een aantal geoptimaliseerde versies (onder andere een MMX versie voor 64-bits integers)

www.madwizard.org

Pagina: 1