身份證號碼的故事

文章推薦指數: 80 %
投票人數:10人

阿眾所週知, 身份字號的第一位為英文字母, 阿它代表你的出生地(其實應該說是登記出生的所在), 參見下表。

第二位為數字,是男女生之代碼,男生為1,女生為2, (? 阿 ... 不能反攻大陸的真正理由! (從身分證編碼規則談起..) 大家知道為什麼不能反攻大陸嗎? 有很多傳說.. 老共太強?No! 老蔣沒有LP?NO! 美國杜魯門總統阻撓? No!No!NO! 其實最主要原因是因為: 身份證號碼.. 不夠用了.. 嘿嘿嘿! 不要告訴別人喔! 這件事全世界現在.. 只有兩個人知道,對啦,一個就是我:-) 阿眾所週知, 身份字號的第一位為英文字母, 阿它代表你的出生地(其實應該說是登記出生的所在),參見下表。

第二位為數字,是男女生之代碼,男生為1,女生為2, (?阿變性的應該可以用3和4代表男變女或女變男..?) 接下來為流水號(sequencenumber), 最後一位則為檢查號碼(weightedchecksum),是算出來的! 阿這樣怎會跟反攻大陸有關呢?別急!且聽我慢慢道來.. 是這樣的, 當初開始統編身份證號碼時,省屬以上單位只有22個, 就是以下沒有星號(*)帶頭的,所以IO很像1與 0不用, W與M對沒學過英文的會搞錯不用,Z很像2也不用! 用22個字母依序對應兩位數10到31, 後來金門縣用掉W對應32,連江縣用掉Z對應33, 最後嘉義市和新竹市分別升格為省轄市把I和O也用掉了! (以前住嘉義市的和嘉義縣的一樣用Q,新竹市的在民國70年以前的和新竹縣一樣用J) (注意下表如果把有星號的項目拿掉則號碼是連續的) 至此二十六個字母用光了,不允許再升格! (聽說這也導致後來的廢省:-(害得宋楚瑜和李登輝翻臉!:-) 阿最嚴重的當然是.. 也不能反攻大陸了! 不然身份證號碼就沒辦法編了.. 為此,所有當初參與編身分證號碼的都被捉去槍斃了! 也就是因為這樣,這件事就只剩下我蔡神一個人知道!  (以上純屬瞎掰,若有巧合..阿就是巧合咩:) 算檢查碼(最後一位)要先把英文碼根據下表轉換成兩位數字:A=10台北市J=18新竹縣S=26高雄縣 B=11台中市K=19苗栗縣T=27屏東縣 C=12基隆市L=20台中縣U=28花蓮縣 D=13台南市M=21南投縣V=29台東縣 E=14高雄市N=22彰化縣*W=32金門縣 F=15台北縣*O=35新竹市X=30澎湖縣 G=16宜蘭縣P=23雲林縣Y=31陽明山特區 H=17桃園縣Q=24嘉義縣*Z=33連江縣 *I=34嘉義市R=25台南縣 計算檢查號碼的演算法: (a)先把英文字母依照上表轉成兩位數字, 這樣連同其餘數字共有十一位最右邊一位是檢查碼,是依據其餘十位算出來的 (b)各數字從左到右依次乘上1,9,8,7,6,5,4,3,2,1(檢查碼先不管) (c)求出(b)之和,除以10取餘數,再用10減該餘數,結果就是檢查碼, 但是若餘數為0,則檢查碼就是0。

例如:身份證號碼A123456789剛好是個合法的號碼: A123456789 10 1987654321 ------------------------------------ 1+0+8+14+18+20+20+18+14+8=121 121%10=1(%就是取餘數) 10-1=9即為檢查碼(checksum) **阿根據電視報導, 該位擁有一條龍A123456789身分證號 的先生困擾多多!   包括無法上網購票,因為都被禁掉了!  也沒銀行要給他申請信用卡! 因為懷疑那是假的號碼!! **問題思考: 1.為什麼要採取weightedsum來算checksum? 2.這樣檢查碼的比重剛好也是1,有蛇麼缺點? 阿廢話..用算出的檢查碼的比重當然是1,我是指它左邊那位比重也是1啦! Hint:人在看連續數字容易把鄰近的看對調,打字時不小心也會打對調. 3.新竹市最後把O用掉對應35是個嚴重的錯誤 因為O有時寫不好會被誤為D,此時O和D互相寫錯是查不出來的,為蛇麼? 4.寫程式如何A對到10,B對到11,...?有很多方法!   ==>可用超級賴皮法寫26個if:-)但是,這樣你好意思嗎?   ==>也可以利用一段一段(A到H,J到N,...)寫數個if,   ==>當然更方便的是乾脆造一個table(array)來查!   ??如何查?阿..福氣啦..阿不是..我是說習題啦:-) 5.所以,習題來囉!   阿就是要寫一個至少可以檢查身分證號碼的程式,   最好也要可以生出合法的身分證號碼!   甚至還要可指定出生地與男女!(就是身分證號前面兩碼) Hint:用fgets()把整列當字串讀入再處理,字母要允許輸入大寫或小寫! 可規定輸入-1或是quit表示結束. 6.這個習題的目的, 除了讓同學練習字串處理與瞭解ASCII碼之外, 也讓同學知道有檢查碼(checksum)這種概念! 從身分證編碼規則中知道有所謂的加權檢查和(Weightedchecksum) -- 後記:關於新五都..    自從馬英九當總統後,積極與老共修好與示好..   阿當然老共也就給與回報,   根據路邊社消息指出,   老共已經同意把福建南邊以及海南島等讓給台灣,   做為馬英九競選連任的賀禮與籌碼!   阿可是這樣身分證號碼不夠用啊??   於是..靈機一動!有了..可以弄出三個字母來備用:  對..你猜對了..就是合併一些縣市:    台中縣市合併,讓出L;    台南縣市合併,讓出R;    高雄縣市合併,讓出S;   阿台北縣太大了,只好不合併!  阿桃園縣市本來就只用一個字母,升格也沒鳥用, 所以雖然人口比台南縣市合起來還多,仍暫不准升格!   (註:桃園市是縣轄市,歸桃園縣管轄) 還好不是空出這三個:台中縣+雲林縣+南投縣, 不然紀曉嵐和陳唐山都會用台語說..那就不太好囉:-) 這就是何以會有新五都的秘密,噓..不要太大聲,會被抓去關喔!  "Bewareofbugsintheabovecode;Ihaveonlyproveditcorrect,nottriedit." --DonaldKnuth(/usr/games/fortune) Murphy'sLawisrecursive. Washingyourcartomakeitraindoesn'twork. Itismucheasiertosuggestsolutionswhenyouknownothingabouttheproblem. 參考答案(Big5編碼) 或 ifyoucanNOTreadit, Clickheretosee參考答案(Utf8編碼) Youarethe -thvisitorstothispage.



請為這篇文章評分?