C言語 1バイトの数値内の何ビット目に1があるか返す関数例
☆C言語 1バイトの数値内の何ビット目に1があるか返す関数例
記述:2010年12月頃
別サイトより移動:2012年1月頃
#include<stdio.h>
///////////////////////////////////////////////////////////////////////
//1バイトの数値内の何ビット目に1があるかかえす関数 
//ビットの並びは最上位7、最下位0とする
//Buf:1バイト数値
//No :何回目に出てきた1か
//戻り値:ビット番号
//呼出使用例:Buf:1バイトデータ(例:unsigned char Buf;  Buf=0x88;)
///////////////////////////////////////////////////////////////////////
int Bit_1_Sagasu( unsigned char Buf,int No )
{
    int i;          //ビットカウント
    int Flag = 0;   //Noカウント
    for( i=0; i<8; i++ ) // ビット
    {
        if( (Buf&(1<<i)) == (1<<i) )
        {
            if(Flag==No)
            {
                return i; // ビット番号を返す
            }
            Flag++;
        }
    }
    return -1;
}
「補足説明」
 Buff & (1<<i):ビットの1部分(1つのビット)と1との&を出す、
これでビットが1かどうかわかる
 1<<i :ビットの1部分(1つのビット)
ずらしたものには0が入る
需要はないかと思いますが。
記述:2010年12月頃
別サイトより移動:2012年1月頃
Twitter Facebook Google+ はてな Pocket LINE
管理人による書き込みの確認後、荒らし書き込みでない場合に表示させていただきます。
悪意ある書き込みや挑発的な書き込みと思われる内容は、表示させません。
その為、ちょっと書き込みから表示までに時間がかかってしまいます。ご了承下さい。
暑さの一番の原因はなんだと思いますか?
あなたの支持する政党はどの党ですか?
今のページの関連ページのリストへ
ザ・覚書のトップページに戻る
全ページのリストへ