今回は整数値のビット数から、その値を表現するのに必要になる桁数を求めます。負の値は考慮していませんし、あくまでも数字の桁数ですので符号や3桁ごとのカンマなどは含みません。

桁数は16進数、8進数、10進数について求めます。具体的な理屈については元ネタを参照してください、ここではあくまでも結果だけを掲載するにとどめます。

それでは例によってメタ関数からです。

次に普通の関数を定義してみます。

 

例によってC++98でもコンパイルできるように書いています。C++11以降であればconstexprを付ければ整数定数式を得られるようになるのでメタ関数は不要になるかと思います。


元ネタ

↑ 1. 整数型に関するテンプレート