BohYoh.comトップページへ
C & C++ FAQ
目次

C C++ int型のビット数を調べる方法を教えてください。

 CおよびC++言語では、各型のビット数は処理系に依存します。時折int型のビット数を

sizeof(int) * CHAR_BITS /* 駄目 */

で求める方法を見かけますが、好ましくありません。たとえば、char型が8ビットで、int型が12ビットである(すなわち1バイト半である)処理系では、上の求め方で得られる値は16になってしまいます。
 以下のような関数で求めるのが確実です。

/*--- unsigned型のビット数を返却 ---*/ int int_bits(void) { int count = 0; unsigned x = ~0U; while (x) { if (x & 1U) count++; x >>= 1; } return (count); }



戻る

BohYoh.comロゴ