[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