- t' p5 Z& c/ t事實上,如果一個身份證號碼的正確核對值為 A,而在輸入資料時,(由右邊數起的)第 k 個位原本是 a,但現在錯入成 b(a ¹ b),那麼該核對值將會變成 ; o3 t% w K8 p2 f5 t3 u, W7 P0 i1 P0 y7 r
A - a ´ k + b ´ k = A + (b - a) ´ k $ a% u! u; m+ j2 Q- J2 o+ m2 D& [: p1 R# o9 d$ \. h
留意在這裏,除非錯誤發生在第一個位的英文字母上,否則 (b - a) 的絕對值和k都祇會是 1 至 10 之間的數字,不會大於 11,故此 (b - a) ´ k 這個部分,不可能被 11 整除。但因為 A 本身可以被 11 整除,所以整個核對值 A + (b - a) ´ k,便不能被 11 所整除了。由此可以知道輸入的資料有錯。+ R$ Q! u8 j' F% E/ f
; U* \" l7 R' O* f' K m: t* P, v6 Z當然,應用核對值的方法有一個死穴,就是頭一個字母如果錯入了一個和原本字母相隔 11 個位的字母,例如:將 “H856249(2)” 錯入成 “S856249(2)”(其核對值為 308,可以被 11 整除),那麼電腦亦無法知道到輸入的資料有錯了。不過,相信發生如此錯誤的機會極之小,所以這個方法亦相當可靠。7 T2 r9 w7 @3 Q# [+ P' E
8 j6 i( K g R6 F4 W7 L; `還有,如果輸入資料時出現 2 處或以上的錯誤,例如:將 “H856249(2)” 錯入成 “H856049(A)”,我們亦無法將錯誤檢查出來。(當然,如果太容易出現 2 處的輸入錯誤,那麼我認為最佳的解決辦法,就是辭退那位輸入員,改聘另一位更可靠的人選了!); V! ]! ]6 P1 H' F/ R
, t7 f" ]6 I8 Y
另一個秘密 0 W& ?2 B3 Y7 y/ _4 B8 H
留意在上面的討論中,那個位值倍數其實沒有多大的作用。事實上,如果我們不乘上任何倍數而直接將所有數位加起來,再定出一個核對數位,我們依然可以檢查出輸入資料時(1 處)的錯誤。那麼,我們為甚麼需要加入這個位值倍數呢? 2 W6 o$ a2 \* D4 ~& Z, s" k( S: M% K) b0 Y3 C7 k( V2 Y
原來這亦是用來防止一般人一個容易犯上的錯誤,這就是誤將其中的兩個數字的位置對調。例如:將 “H856249(2)” 錯誤地變成 “H856294(2)”。 ) h" H! z' B: B4 d2 O9 [9 }! }6 w- R' s4 a$ r
我們再假設正確身份證號碼的核對值為 A,第 k 位的數字為 a,第 k + n 位的數字為 b(a ¹ b;n ³ 1),如果我們錯誤地將 a、b 兩個數字對調了,那麼該核對值便會變成 " _' b3 s9 D2 i- x/ W3 L' V' _. E8 P1 M0 F6 w
A - a ´ k - b ´ (k + n) + a ´ (k + n) + b ´ k = A + (a - b) ´ n ! [5 I) D% z- ^, f7 \5 _, w5 ] r) ~% h! D6 r0 D) t
同理,a、b 和 n 都祇會是 0 至 9 之間的數字,故此 (a - b) ´ n 這個部分,以至是整個核對值,都不能被 11 所整除,由此可以知道輸入的資料有錯了。留意如果沒有這個位值倍數,我們就無法偵測出這種錯誤了。; H5 F4 y& a2 |1 _# H7 X
1 j6 F' P. X' v5 {6 m( l7 r# Z( ~9 t
總而言之,身份證號碼中的核對數位,是一個簡單但非常聰明的設計,它可以讓我們很容易地偵測出輸入資料時的兩種常犯的錯誤,從而確保資料的可靠性。在整個過程中,亦請大家細心欣賞 11 這個數字的功用。由於 11 是一個質數(而且剛好大於 10),任何兩個小於它的數字相乘,都不能被它所整除,所以才能夠在上述運算中,找到輸入時的錯誤。如果換了一個合成數,情況就不同了。例如:12,我們知道 4 和 6 都小於 12,但 4 ´ 6 的結果,卻能被 12 所整除,因此 12 不可以用來做核對過程中的除數。 # `/ M; m" j) p* C7 T" T) G5 \/ A& r0 k5 z
最後,個人認為,既然核對數字已經成為身份證號碼中一個不可或缺的一部分,故此我們其實亦不必將它特別地指明,以一對括號將它括起來。更何況,將它括起來後,更會引起一些不知情的人胡亂猜測,實在無謂。故此,我提議政府在改發新的身份證明文件的同時,將這一對括號刪去。這不是更好的嗎?作者: mingP 時間: 2005-7-2 10:29 PM
malaysia 1 how???=.='''作者: 1986 時間: 2005-7-2 10:45 PM
我聽過p=新移民的說法作者: gaye 時間: 2005-7-2 11:12 PM
這是真的% X. c# l! @% K1 k
Form 5 電腦堂書本有講, 個個位叫 Check Digit作者: 馬仔~~ 時間: 2005-7-2 11:28 PM
好似好難明....作者: andymaldini 時間: 2005-7-2 11:43 PM
有冇可以提供頭頭d英文有冇意思% Z) c. W! m# j7 [6 }+ j, X
P,H,V 好似係新移民 2 H2 K. ~1 F% y- L2 N) K; @R. XG 好似係攞WORK PERMIT $ p8 L' j4 w+ RK,G,Z 多數香港出世,住左香港好多年作者: 冷 時間: 2005-7-3 10:17 AM
我地電腦都有個功課係要我地寫計身分證括號數既程式。 ) B% h0 e1 c) Z4 \( \# B. Y用pascal寫。作者: sysykiller01 時間: 2005-7-3 06:12 PM