C言語関係掲示板

過去ログ

No819 最初の1から最後の1までのビット長さ

[戻る] [ホームページ]
No.10361

すいませんが教えていただけませんか
投稿者---りゅう(2003/11/08 02:20:21)


C言語で、00100100は4。01100110は6。01111111は7というように8桁の中の最初の1から最後の1までのビット長を求めたいのですが、どのように最初と最後の1を認識させればいいのでしょうか?また、調べるにしてもどのようなキーワードで検索すればいいのでしょうか?

No.10365

Re:すいませんが教えていただけませんか
投稿者---通りすがりさん(2003/11/08 10:56:00)


言葉で説明するのが苦手なので、プログラムを書いてみました。
参考にしてください。

#include <stdio.h>

int main(void)
{
    unsigned int x = 36; //00100100

    int count1 = 0;
    int count2 = 0;

    int i;

    for(i = 0; i < 8; i++)
    {
        if((x >> i & 1) == 0)
            count1++;
        else
            break;
    }

    for(i = 0; i < 8; i++)
    {
        if((x << i & 128) == 0)
            count2++;
        else
            break;
    }

    count1 = 8 - count1 - count2;

    printf("%d\n", count1);

    return(0);
}


No.10366

Re:すいませんが教えていただけませんか
投稿者---りゅう(2003/11/08 11:27:27)


通りすがりさん。

>言葉で説明するのが苦手なので、プログラムを書いてみました。
>参考にしてください。
>
>わざわざプログラムを教えていただき本当にありがとうございます。これをつかわせていただきます。