身份证中公民身份号码的最后一位有时出现'X'的原因

发布于:2018-07-20 20:58:11

记得上高中的时候,正好是办身份证的年龄,那个时候同学之间都会互相看看对方的号码是多少,突然看到有位同学的最后一位是'X',大家都会很好奇并热烈的讨论一番。

今天就让我们一起来探讨这个神秘的‘X’吧:

要探讨这个神秘的‘X’,我们就要追溯到中华人民共和国国家标准(简称:国标),其中有一个叫公民身份号码的GB11643-1999文件,它规定了公民身份号码的编码对象(编码对象指具有中华人民共和国国籍的公民)、号码的结构和表示形式,使每个编码对象获得一个唯一的、不变的法定号码。

说了这么多,下面就来看看本篇的主角吧^_^。‘X’所处的位置(也就是18位身份证号码的最后1位)在标准中叫做校验码,校验码是用来验证前面17位本体码(简单理解,就是前面17位数字),通过下图我们就可以知道其各个码的位置和含义:

准备知识,下面先给出2个表,方便后面计算的时候可以查询:

那么第18位的校验码是如何计算出来的呢?下面我们以身份证号码: 11010519491231002X 为例通过6步得到最后一位校验码'X'。

第一步:通过上图可以知道这里举例使用的身份证号码的本体码为:11010519491231002,那么我们就列出该本体码所在的位置序号(从左到右,数字18开始递减到2)关系表,如下图所示:

第二步:根据表1列出和字符位置序号i相对应的加权因子值的关系表(也就是把表1抄过来,简单吧),如下图所示:

第三步:再将前面两步的第2行相同位置序号的值相乘之后得到的新值放到下面新的级数表中,如下图所示:

第四步:计算基数的和,即将第三步的第二行累加起来,如下图所示:

第五步:将第四步计算的级数和的值167除以11取余数之后为2,即:167%11=2

第六步:查表2可知,当第1行级数和的余数为2时,第2行的校验码值ai=X。 是不是很简单啊,So Easy。

到此我相信大家应该明白第18位的校验码是如何计算出来的了吧?原来'X'是表2中校验码中其中一个字符值啊。实际上这里的'X'代表的是阿拉伯数字10,如果我们把上面表2的'X'换做10的话,那么我们现在使用的身份证号码就有可能变成19位,没有办法保证身份证号码一直是18位的情况,所以就采用了罗马数字中的'X'来代替了。建议身份证号码最后一位是‘X’的小伙伴,在填写一些基本信息的时候,把这个‘X’写成大写的形式,避免一些不必要的麻烦哦。

附件:
* 中华人民共和国国家标准 公民身份号码 GB11643-1999
百度网盘下载链接:https://pan.baidu.com/s/1u4v6HyEm5JYsiwYQnPx7mw
提取密码:56z2

阅读 100000+