// Bits.cpp : Calculate numbers of bits on a long number.
// Coder Jozu
#include "stdafx.h"
int main(int argc, char* argv[])
{
long x;
int num;
char buff[128];
while(1)
{
printf("enter a hex value:");
gets(buff);
if(buff[0] == 'q' || buff[0] == 'Q')
break;
if(!sscanf(buff, "%X", &x))
{
printf("Invalid number.\n");
continue;
}
__asm
{
push esi
push eax
mov eax, x
mov ecx, 32
xor esi, esi
next:
shr eax, 1
jc AddOne
dec ecx
jcxz end
jmp next
AddOne:
inc esi
jmp next
end:
mov num, esi
pop eax
pop esi
}
printf("number of %X has %d bits.\n", x, num);
}
return 0;
}