ホームページ > バックエンド開発 > C++ > C で整数の桁数を効率的に求めるにはどうすればよいでしょうか?

C で整数の桁数を効率的に求めるにはどうすればよいでしょうか?

Linda Hamilton
リリース: 2024-11-01 13:37:02
オリジナル
761 人が閲覧しました

How Can We Efficiently Determine the Number of Digits in an Integer in C  ?

C で整数の桁数を決定する効率的な方法

整数の桁数を決定することは、プログラミングにおける一般的なタスクです。さまざまなアプローチが存在しますが、特に大きな整数を扱う場合、パフォーマンスを最適化することが重要です。

効率的に桁数をカウントするには、ルックアップ テーブルを利用するのが最適なソリューションです。整数のサイズがわかっている場合、ルックアップ テーブルを使用すると、対数アプローチよりも高速にアクセスできます。

ここでは、正と負の整数の両方を処理する一般的なソリューションの実装を示します。

<code class="c++">template <class T>
int numDigits(T number) {
    int digits = 0;
    if (number < 0) digits = 1; // handle negative numbers
    while (number) {
        number /= 10;
        digits++;
    }
    return digits;
}
ログイン後にコピー

機能を強化するにはさらに効率を高めるために、部分的な特殊化の最適化を特定の整数サイズに適用できます。 64 ビット整数の例を次に示します。

<code class="c++">template <>
int numDigits(int64_t x) {
    if (x == INT64_MIN) return 19 + 1;
    if (x < 0) return digits(-x) + 1;

    if (x >= 100000000000000000) {
        if (x >= 1000000000000000000)
            return 19;
        return 18;
    }
    // ... (similar code for other ranges)

    return 1;
}</code>
ログイン後にコピー

この最適化された実装では、特定の範囲値を利用して計算時間を最小限に抑えます。

さらに、より小さな整数サイズに対して部分特殊化も使用できます。

ルックアップ テーブルを使用し、特定の整数サイズに合わせて最適化することにより、このメソッドは C の整数の桁数を決定するための効率的でスケーラブルなソリューションを提供します。

以上がC で整数の桁数を効率的に求めるにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート