求最大连续bit数

来源:互联网 发布:windws10固态硬盘优化 编辑:程序博客网 时间:2024/05/01 16:35

//求最大连续bit数
//功能:求一个byte数字对应的二进制数字中1的最大连续数
//例如3的二进制为00000011,最大连续2个1
//输入:一个byte数字
//输出:转成二进制后连续1的个数

在c语言中没有byte数据,只有int 以及unsigned char

此题主要分两步,一是将byte数据转换为2进制数组;二是统计最大连续个数

首先,转换二进制
先a/2,再a*2,如果两数相等,那么此位为0,无余数;否则,为1

    for(i=0;i<8;i++)    {        b=a;        a=a>>1;        a=a<<1;        if(a==b)            n_bit[i]=0;        else            n_bit[i]=1;        a=b>>1;    } 

其次,计算最大连续数
判断此位是否为1,如果为1,那么在前一位的个数基础上加1.

    for(i=1;i<8;i++)    {        if(n_bit[i])            sum_bit[i]=sum_bit[i-1]+1;        else            sum_bit[i]=0;    }
0 0
原创粉丝点击