#include <stdio.h>
unsigned int bits0(unsigned int num) {
int count = 0; while(num) num >>=1, ++count; return count;
}
#define LE 1
unsigned int bits1(unsigned int num) {
union {unsigned int asInt[2];double asDouble;} t;
t.asDouble = (double)num;
int n = 0x41E - (t.asInt[LE] >> 20);
return 32- (n & 31) + (n >> 9);
}
int main(int argc, char **argv) {
int j=2,i=0;
for (;i<25;++i,j<<=1){
unsigned int d = j|1;
printf("%lu==%lu\n", bits0
(d
), bits1
(d
)); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp1bnNpZ25lZCBpbnQgYml0czAodW5zaWduZWQgaW50IG51bSkgewoJaW50IGNvdW50ID0gMDsgd2hpbGUobnVtKSBudW0gPj49MSwgKytjb3VudDsgcmV0dXJuIGNvdW50OwkKfQojZGVmaW5lIExFIDEKdW5zaWduZWQgaW50IGJpdHMxKHVuc2lnbmVkIGludCBudW0pIHsKICAgdW5pb24ge3Vuc2lnbmVkIGludCBhc0ludFsyXTtkb3VibGUgYXNEb3VibGU7fSB0OwogICB0LmFzRG91YmxlID0gKGRvdWJsZSludW07CiAgIGludCBuID0gMHg0MUUgLSAodC5hc0ludFtMRV0gPj4gMjApOwogICByZXR1cm4gMzItIChuICYgMzEpICsgKG4gPj4gOSk7Cn0KaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CglpbnQgaj0yLGk9MDsKCWZvciAoO2k8MjU7KytpLGo8PD0xKXsKCSAgdW5zaWduZWQgaW50IGQgPSBqfDE7CgkgIHByaW50ZigiJWx1PT0lbHVcbiIsIGJpdHMwKGQpLCBiaXRzMShkKSk7Cgl9CiAgcmV0dXJuIDA7Cn0=