[Cryptography] Exotic Operations in Primitive Construction
Ray Dillinger
bear at sonic.net
Fri Oct 9 19:54:04 EDT 2020
On Sun, 2020-10-04 at 08:53 -0700, Christian Huitema wrote:
>
> "Reverse a bit chain" is a classic interview question for junior
> software developers. The answer has better be O(logN), as Jerry and
> John
> hinted.
Heck, I don't mind.
/*aggressively parenthesized in case precedence of
binary operations is unfamiliar. */
uint32_t reverse32(const uint32_t input){
const uint32_t mask1=5*16843009;
const uint32_t mask2=3*16843009;
const uint32_t mask3=3*mask1;
const uint32_t mask4=16711935;
const uint32_t mask5=65535;
uint32_t bits=((input<<1) & (mask1<<1))|((input>>1) & mask1));
bits = ((bits<<2) & (mask2<<2)) | ((bits>>2)& mask2));
bits = ((bits<<4) & (mask3<<4)) | ((bits>>4)& mask3));
bits = ((bits<<8) & (mask4<<8)) | ((bits>>8)& mask4));
bits = ((bits<<16) & (mask5<<16)) | ((bits>>16)& mask5));
return(bits);
}
Bear
More information about the cryptography
mailing list