如何获取标志位寄存器的1出现在哪个位上

u16 bitget(u16 bitfield)
{
    
    
    if (bitfield == 0)
    {
    
    
        return 16;//返回16就是根本没有一个寄存器标志位置位
    }
    else
    u16 i;
    for (i = 0; i < 15; i++)
    {
    
    
        if (bitfield & (1 << i))//在某一位 置1的时候,break,并且返回该位
            break;
    }
    return i;
}

猜你喜欢

转载自blog.csdn.net/Mr_liu_666/article/details/105886537