有人能给我解释一下((c-65+k)%26)+65)在凯撒密码中是如何工作的吗?

有人能给我解释一下((c-65+k)%26)+65)在凯撒密码中是如何工作的吗?,c,modulo,caesar-cipher,C,Modulo,Caesar Cipher,如果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' 我一定不明白%的工作方式 模数不是整数除法。模数给出除法的余数,因此3/26等于0,余数为3。因此,3%26等于3。模数不是整数除法。模数

如果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'

我一定不明白%的工作方式

模数不是整数除法。模数给出除法的余数,因此3/26等于0,余数为3。因此,3%26等于3。

模数不是整数除法。模数给出除法的余数,因此3/26等于0,余数为3。因此,3%26是3。

关键事实-字母A的ASCII码是65

下面是你的密码是如何工作的——问题标题中的原始表达

取一个字母的ASCII值,从中减去a的值,得到一个基于0的数字。 将键值添加到此数字,并将其移动k个位置。 现在将上面得到的数字除以26,放弃商并使用余数。这是模运算符%。这将使数字始终保持在0-25范围内,因为除以26永远不会有大于25的余数。 添加65以将其转换为加密的大写字母。 这允许密钥为任意数字,并且仍然将加密输出保持在A-Z的ASCII范围内

您正在将%运算符解释为除法。实际上,它是模或遗忘商,我想要余数运算符

范例

0%2是0 1%2等于1 2%2是0 3%2等于1 等等。模是循环的。

关键事实-字母A的ASCII码是65

下面是你的密码是如何工作的——问题标题中的原始表达

取一个字母的ASCII值,从中减去a的值,得到一个基于0的数字。 将键值添加到此数字,并将其移动k个位置。 现在将上面得到的数字除以26,放弃商并使用余数。这是模运算符%。这将使数字始终保持在0-25范围内,因为除以26永远不会有大于25的余数。 添加65以将其转换为加密的大写字母。 这允许密钥为任意数字,并且仍然将加密输出保持在A-Z的ASCII范围内

您正在将%运算符解释为除法。实际上,它是模或遗忘商,我想要余数运算符

范例

0%2是0 1%2等于1 2%2是0 3%2等于1
等等。模是循环的。

3%26是3,而不是0。模数是余数。想想时钟上的模数12。如果是10点,加上4小时,10+4=14。但在时钟上,指针现在指向2,而不是14。无论你加多少小时,手总是指向一个从1到12的数字。这就是模的工作原理

10+4=14

14%12=2 14除以12等于1,余数为2

10+100=110

110%12=4除以12等于余数4

如果是10点,你等了100个小时,手现在指向4


使用除法的余数,除以12总是得到一个从0到11的数字,因此将12点视为0点。

3%26是3,而不是0。模数是余数。想想时钟上的模数12。如果是10点,加上4小时,10+4=14。但在时钟上,指针现在指向2,而不是14。无论你加多少小时,手总是指向一个从1到12的数字。这就是模的工作原理

10+4=14

14%12=2 14除以12等于1,余数为2

10+100=110

110%12=4除以12等于余数4

如果是10点,你等了100个小时,手现在指向4


使用除法的余数,除以12总是得到一个从0到11的数字,因此将12点钟视为0点钟。

可能的重复是一个愚蠢的混淆。使用字符常量!可能的重复是一种愚蠢的混淆。使用字符常量!