ビットを処理するメソッド

  指定位置のビットのみ ON の値を返す



32 ビットの範囲で、一番右端を 1 として 1 〜 32 を引数として渡します
  
// *********************************************************
// 指定位置のビットのみ ON
// 引数が範囲外の場合は 0 を返す
// *********************************************************
int Integer::GetFlg( int a )
{
	if ( a < 1 ) {
		return 0;
	}
	if ( a > 32 ) {
		return 0;
	}

	int ret;

	ret = 1;
	ret <<= ( a - 1 ); 

	return( ret );
}
  

  
Integer a;
int i;

for( i = 1; i <= 32; i++ ) {
	printf( "%08x\n", a.GetFlg( i ) );
}
  
このメソッドは、内部データと関係しません



  内部変数の指定位置のビットが ON かどうかを調べる



  
// *********************************************************
// 指定位置が ON ならば 1、OFF または指定範囲外で 0 を返す
// *********************************************************
int Integer::IsSetFlg( int a )
{
	if ( this->nData & this->GetFlg( a ) ) {
		return 1;
	}
	else {
		return 0;
	}
}
  

  
Integer a;

a = 0x18;

printf( "%d\n", a.IsSetFlg( 1 ) );
printf( "%d\n", a.IsSetFlg( 4 ) );
printf( "%d\n", a.IsSetFlg( 5 ) );
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ