[問題] ACM 128 software CRC
題目: http://luckycat.kshs.kh.edu.tw/homework/q128.htm
拍謝小弟數學不好
其實是要問數學的@@
這題是software CRC 就是一串字串當作傳輸資料
關鍵的code 如下
for(int i = 0; i < s.length(); i++)
ans = ((ans << 8) + s[i]) % 34943;
ans 一開始是 0
s 是input string 例: s = "ABCDEFGHI"
等於是在做一個超大數的除法求餘數
想要問的是為什麼求大數的餘數只要上面那兩行code 就好呢?
自己測試了一下 A % B != (A<<8) %B
以上面的“ABCDEFGHI” 例子來看 資料有九個bytes 也就是2^72
為什麼上面那樣做左邊高位元的資料還能保持它的餘數是正確的呢?
想知道數學原理是什麼
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.184.164.153
→
07/21 10:53, , 1F
07/21 10:53, 1F
→
07/21 11:05, , 2F
07/21 11:05, 2F
→
07/21 11:08, , 3F
07/21 11:08, 3F
→
07/21 12:11, , 4F
07/21 12:11, 4F
→
07/21 12:53, , 5F
07/21 12:53, 5F
→
07/21 13:16, , 6F
07/21 13:16, 6F
→
07/21 13:16, , 7F
07/21 13:16, 7F
→
07/21 13:16, , 8F
07/21 13:16, 8F
→
07/21 13:21, , 9F
07/21 13:21, 9F
→
07/21 13:22, , 10F
07/21 13:22, 10F
→
07/21 13:24, , 11F
07/21 13:24, 11F
→
07/21 13:26, , 12F
07/21 13:26, 12F
→
07/21 13:28, , 13F
07/21 13:28, 13F
→
07/21 13:50, , 14F
07/21 13:50, 14F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章