70,011
社区成员




两码事,不过里边提到的查表法值得借鉴,针对楼主的问题只要稍作改动即可。
以4bit对应的整数做为查表下标,比如:
table[0011]=table[3]=0;
table[1100]=table[12]=2;
talbe[0000]=table[0]=-1;
唯一特别的就是0000情况,所以标记table[0000]=-1。
举例,给定数字n=0011 0000; 初始化pos=0;
取n的低4位,table[0000]=table[0]=-1; 是特殊情况,所以pos=pos+4=4=0+4=4;
取n的高4位,table[0011]=table[3]=0; 所以,pos=pos+0=4+0=4; 程序结束;
打印pos=4,即n的二进制第4位为1;
int n = 0;
__asm
{
bsr eax, num
mov n, eax
}