c が大文字の数値 (つまり、B が 66) で、議論のために、k が 2 のキー値である場合は? 私はプログラミングが初めてで、これでモジュロがどのように機能するかを理解していません。剰余の値を取ることは知っていますが、このように単純化しませんか?
c = B = 66
k = 2
I imagine the result should be 'D'
(66 - 65 +2)%26 +65
(3)%26 +65
0 + 65
65 = 'A'
% の仕組みが理解できません。
c が大文字の数値 (つまり、B が 66) で、議論のために、k が 2 のキー値である場合は? 私はプログラミングが初めてで、これでモジュロがどのように機能するかを理解していません。剰余の値を取ることは知っていますが、このように単純化しませんか?
c = B = 66
k = 2
I imagine the result should be 'D'
(66 - 65 +2)%26 +65
(3)%26 +65
0 + 65
65 = 'A'
% の仕組みが理解できません。
重要な事実- 文字「A」の ASCII コードは 65 です。
これがあなたのサイファーの仕組みです-質問のタイトルの元の表現です。
k
ます。%
です。26 で割った余りが 25 を超えることはないため、これにより常に 0 ~ 25 の範囲の数値が維持されます。これにより、キーを任意の数値にすることができ、「暗号化された」出力は AZ の ASCII 範囲内に保持されます。
%
演算子を除算として解釈しています。実際には、これは剰余演算子または商を忘れる剰余演算子です。
例
0%2
は 0 です1%2
は 12%2
は 0 です3%2
は 1等々。モジュロは循環的です。
モジュラスは int 除算ではありません。モジュラスは割り算の余りを表すので、3 / 26 は 0 で余りは 3 です。したがって、3 % 26 は 3 です。
3 % 26 は 0 ではなく 3 です。モジュラスは剰余です。時計のモジュラス 12 を考えてみてください。10 時の位置に 4 時間を足すと、10 + 4 = 14 になります。しかし、時計の針は 14 ではなく 2 を指します。何時間を足しても、針は常に数字を指します。 1 から 12 まで。これがモジュラスの仕組みです。
10 + 4 = 14
14 % 12 = 2 (14 を 12 で割ると 1 余り 2)
10 + 100 = 110
110 % 12 = 4 (110 を 12 で割った余り 4)
10 時で 100 時間待つと、針は 4 を指します。
(割り算の余りを使うと、12で割ると必ず0から11までの数字になるので、12時を0時と考えてください。)