// ********************************************************* // 指定位置のビットのみ 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 ならば 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 ) );