Wat doe je trouwens hier precies:
Wouser schreef:Code: Selecteer alles
unsigned short issetBit(const unsigned int bit, const unsigned int bits)
{
return (~bits & (0x01 << bit)) && 1;
}
Vanwaar de ~, daarmee inverteer je de bits, je wilt toch checken of hij op 1 staat? Als dat het geval is returnt je issetBit functie volgens mij nu juist 0.
De enige reden waarom dit nu goed
lijkt te gaan, is omdat in je testgetal (0x269) toevallig alle paren even en oneven bits ongelijk zijn, waardoor de twee resultaten (bit1 en bit2) in feite verwisseld zijn, wat niet direct opvalt.
Probeer maar eens een testgetal met een aantal enen achter elkaar (bijvoorbeeld 0xfff), bit1 en bit2 zullen dan beide 0 zijn volgens mij
Verder is de && 1 overbodig. Het linker deel is waar of niet, en AND'en met 1 verandert er daar niks aan.
In theory, there's no difference between theory and practice. In practice, there is.