有人能给我解释一下((c-65+k)%26)+65)在凯撒密码中是如何工作的吗?
如果c是大写字符的数值,即B是66,并且为了论证,k是键值2?我是编程新手,不明白模在这种情况下是如何工作的。我知道它需要余数的值,但是它不会这样简化吗有人能给我解释一下((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
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点钟。可能的重复是一个愚蠢的混淆。使用字符常量!可能的重复是一种愚蠢的混淆。使用字符常量!