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