ホームページ  >  記事  >  バックエンド開発  >  C/C /Obj-C で負の数のカスタム モジュロ関数を実装するにはどうすればよいですか?

C/C /Obj-C で負の数のカスタム モジュロ関数を実装するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-04 03:13:02482ブラウズ

How to Implement a Custom Modulo Function for Negative Numbers in C/C  /Obj-C?

C/C で負の数を処理するモジュロ演算子 /Obj-C

C ベースの言語のモジュロ演算子 (%)負の数に適用すると、必ずしも直観的に動作するとは限りません。特に、正の約数であっても結果が負になる場合があります。この動作は、特に数学者にとってイライラする可能性があります。

カスタム モジュロ関数

この問題に対処するには、負の数を正しく処理するカスタム モジュロ関数を実装できます。次の関数は、モジュロ演算子の実装定義の動作を使用して、結果が常に正であることを保証します。

int mod(int a, int b) {
    if (b < 0) {
        return -mod(-a, -b);
    }

    int ret = a % b;
    if (ret < 0) {
        ret += b;
    }

    return ret;
}

この関数は、最初に除数が負であるかどうかをチェックすることで機能します。そうである場合、関数は被除数と除数の否定を使用してそれ自体を再帰的に呼び出します。これにより、結果が正になることが保証されます。

次に、関数はモジュロ演算子を使用して除算の余りを計算します。剰余が負の場合、関数は剰余に除数を加算して正にします。

最後に、関数は結果を返します。

使用法

mod() 関数をモジュロ演算子の代わりに使用して、負の数に対して望ましい動作を得ることができます。例:

int result = mod(-1, 8); // result is 7
result = mod(13, -8); // result is -3

以上がC/C /Obj-C で負の数のカスタム モジュロ関数を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。