|
C & C++ FAQ
|
| C | C++ | int型のビット数を調べる方法を教えてください。 |
で求める方法を見かけますが、好ましくありません。たとえば、char型が8ビットで、int型が12ビットである(すなわち1バイト半である)処理系では、上の求め方で得られる値は16になってしまいます。sizeof(int) * CHAR_BITS /* 駄目 */
/*--- unsigned型のビット数を返却 ---*/ int int_bits(void) { int count = 0; unsigned x = ~0U; while (x) { if (x & 1U) count++; x >>= 1; } return (count); }