忘れる前に覚書。優しい文章を目指します。
ザ・覚書 ザ・覚書
出来るだけ子供にも、わかりやすいように書いて行きたいと思います。

PCバージョンでサイトを表示しています。
【ザ・覚書 3クリックアンケート実施中】
暑さの一番の原因はなんだと思いますか?
あなたの支持する政党はどの党ですか?
ザ・覚書のトップページに戻る今のページの関連ページのリストへ

C言語 1バイトの数値内の何ビット目に1があるか返す関数例

☆C言語 1バイトの数値内の何ビット目に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




一言掲示板です。なにかありましたら以下に書いて書き込みボタンを押して下さい。
管理人による書き込みの確認後、荒らし書き込みでない場合に表示させていただきます。
悪意ある書き込みや挑発的な書き込みと思われる内容は、表示させません。
その為、ちょっと書き込みから表示までに時間がかかってしまいます。ご了承下さい。

お名前

コメント




【ザ・覚書 3クリックアンケート実施中】
暑さの一番の原因はなんだと思いますか?
あなたの支持する政党はどの党ですか?

今のページの関連ページのリストへ
ザ・覚書のトップページに戻る
全ページのリストへ