boost::integer_mask

トップページ > 整数と数値型 >

abstract

必要なヘッダ
<boost/integer/integer_mask.hpp>
出来ること
ビットマスク
リファレンス
en

sample

#include <iostream>
#include <boost/integer/integer_mask.hpp>
using namespace std;

int main()
{
	int a = 100; // 2進表示で、01100100

	// 下から5+1bit目のみ残す
	int b = a & boost::high_bit_mask_t<5>::high_bit;
	// 下5bitを全部残す
	int c = a & boost::low_bits_mask_t<5>::sig_bits;
	// 下から3+1bit目を立てる
	int d = a | boost::high_bit_mask_t<3>::high_bit;
	// 下3bitを全部立てる
	int e = a | boost::low_bits_mask_t<3>::sig_bits;

	if( b == 32 )
		cout << "Ok_b" << endl;
	if( c == 4 )
		cout << "Ok_c" << endl;
	if( d == 108 )
		cout << "Ok_d" << endl;
	if( e == 103)
		cout << "Ok_e" << endl;

	return 0;
}

etc

ある変数Nの下から5bit目が立っているかどうか調べたいときは N & 1<<(5-1) とやったりするわけですが、 要するにそれです。

presented by k.inaba (kiki .a.t. kmonos.net) under CC0