華興恒
在我們的日常生活中,數(shù)字編碼可以說隨處可見.當然,與我們最密切相關的莫過于身份證號碼了.身份證是每一個公民必備的重要證件,每個人從出生后到公安機關報戶口的那一刻起,派出所的電腦系統(tǒng)就會給你匹配一個數(shù)碼唯一的身份證號碼.
我國是從1985年開始實施居民身份證制度的,當時簽發(fā)的身份證數(shù)字編號只有15位.到了1999年,我國開始實施了新的身份證數(shù)字編碼標準,身份證的數(shù)字編碼由15位升級到了18位,這18位數(shù)字編碼由17位數(shù)字本位碼和一位校驗碼組合而成.
身份證的18位數(shù)字編碼中的前6位代表的是地址碼,其中最前面的第1、2位數(shù)字表示的是戶口所在省份的代碼,第3、4位數(shù)字表示的是戶口所在城市的代碼,第5、6位數(shù)字則表示的是戶口所在區(qū)或縣的代碼.身份證第7~14位數(shù)字是公民出生日期碼,表示編碼對象出生的年、月、日.身份證第15~17位是順序碼,表示同一地址碼所標識的區(qū)域范圍內(nèi),對同年、同月、同日出生的人員編定的順序號.其中第17位數(shù)字編碼用來表示性別:奇數(shù)表示男性,偶數(shù)表示女性.
身份證的第18位數(shù)字,也就是最后一位是最有意思的,它是一個校驗碼,是由前17位數(shù)字經(jīng)過一定的計算規(guī)則得到的校驗值,用它可以識別身份證號是否合法.那么,這位校驗碼是如何得出來的呢?下面我們就來說明一下它的計算方法.
第一步,將前面17位身份證數(shù)字分別乘以不同的系數(shù)(可稱為“加權因子”),其各位數(shù)字對應的加權因子依次為:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2.
第二步,把得到的17個乘積相加求和(可稱為“加權和”).
第三步,將加權和除以11,求余數(shù).
第四步,由于余數(shù)只能取0、1、2、3、4、5、6、7、8、9、10,這樣根據(jù)余數(shù)值與校驗碼的對應關系即可確定校驗碼.這11個余數(shù)對應的校驗碼依次為:1、0、X、9、8、7、6、5、4、3、2,即余數(shù)若為0,則最后的校驗碼取1;余數(shù)若為1,則最后的校驗碼取0.
需要特別注意的是,校驗碼中出現(xiàn)的“X”是羅馬數(shù)字中的10,為了保證身份證號碼是18位,當校驗碼為“10”時,就用“X”代替了.通過上面提到的對應關系可知,如果前三步得到的余數(shù)是2的話,就會在身份證的第18位數(shù)字上出現(xiàn)X.
不妨舉一個例子:某男性的身份證號碼是34052419800101001X.下面我們就來看一看這個身份證號碼是不是合法.首先,將前17位數(shù)字分別乘以7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2,并求和得:3x7+4x9+0x10+5x5+2x8+4x4+1x2+9x1+8x6+0x3+0x7+1x9+0x 10+1x5+0x8+0x4+1x2=189.然后用189除以11得余數(shù)是2.最后通過對應規(guī)則可以知道,余數(shù)2對應的校驗碼是X,所以這是一個合法的身份證號碼.
顯然,身份證號碼的最后一位校驗碼的計算過程是比較復雜的,它是由公安機關的計算機根據(jù)上面的算法自動生成的.如果你有興趣,不妨試著計算一下自己身份證號碼中最后的校驗碼.