分享

!!!!!身份证号的含义 第十八位数字的计算方法

 看见就非常 2013-04-07

完整的18位身份证号的含义是:
第1、2位是省、自治区的编号;第3、4位是地市的编号;第5、6位是区县的编号;
(身份证号前六位是地区码,可以凭此确定此人初次申报户口的县区市,但因为身份证号是终身不变的,一旦他迁移了户口,就无法确定目前的户籍所在区县市了)
2、第7~14位是出生日期码。
3、第15~17位为顺序码。同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。其中第十七位奇数分给男性,偶数分给女性。
15~17位为顺序号,是县、区级政府所辖派出所的分配码,每个派出所分配码为10个连续号码,例如“000-009”或“060-069”,其中单数为男性分配码,双数为女性分配码,如遇同年同月同日有两人以上时顺延第二、第三、第四、第五个分配码。如:007的就是个男生 而且和他同年月日生的男生至少有两个 他们的后四位是001* 和 003* 

4、校验码。身份证最后一位,是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。作为尾号的校验码,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为X是罗马数字的10。

身份证中第十八位数字的计算方法为:

1. 将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7910584216379105842

2. 将这17位数字和系数相乘的结果相加;

3. 用加出来和除以11,看余数是多少?

4. 余数只可能有0 1 2 3 4 5 6 7 8 9 1011个数字。其分别对应的最后一位身份证的号码为10X98765432

5. 通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2

例如:某男性的身份证号码是34052419800101001X。我们要看看这个身份证是不是合法的身份证。

首先,我们得出,前17位的乘积和是189

然后,用189除以11得出的结果是17 + 2/11,也就是说余数是2

最后,通过对应规则就可以知道余数2对应的数字是X。所以,这是一个合格的身份证号码。

 

十八位身份证最末位是校验码,按一定的规则产生的,用于校验身份证真伪,按理这规则属于保密的,X代表的是其中一个校验码,是10。校验码从0到X共11个。

    分配规则:根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。


       地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。生日期码表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。顺序码表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。顺序码的奇数分给男性,偶数分给女性。校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。下面举例说明该计算方法。


        15位的身份证编码首先把出生年扩展为4位,简单的就是增加一个19,但是这对于1900年出生的人不使用(这样的寿星不多了) 


       某男性公民身份号码本体码为34052419800101001V(V为校验码),首先按照公式⑴计算:


        ∑(ai×Wi)(mod 11)……………………………………(1) 


公式(

1)说明: 
        i----表示号码字符从右至左包括校验码在内的位置序号; 
        ai----表示第i位置上的号码字符值; 
        Wi----示第i位置上的加权因子(其值已定),其数值依据公式Wi=2^(n-1)(mod 11)计算得出。 

           i:     18    17    16    15    14    13    12    11    10    9    8    7     6    5    4    3    2    1 
          ai:      3      4      0      5      2      4      1      9      8    0    0    1     0    1    0    0    1    V 
          Wi:     7      9    10      5      8      4      2      1      6    3    7    9   10   5    8    4    2    1 

根据公式(1)进行计算:


        ∑(ai×Wi) =(21+36+0+25+16+16+2+9+48++0+0+9+0+5+0+0+2) = 189 

        ∑(ai×Wi)(mod 11) = 2(189 ÷ 11 = 17 + 2/11)


然后根据计算的结果,从下面的表中查出相应的校验码,其中X表示计算结果为10:


        ∑(ai×WI) (mod 11) :   0    1    2    3    4    5    6    7    8    9    10 
        校 验 码 字 符 值 V :1    0    X    9    8    7    6    5    4    3    2 


根据上表,查出计算结果为2的校验码为所以该人员的公民身份号码应该为 34052419800101001X。

用条件格式检查身份证校验码是否正确的方法

            18位身份证校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。
          为什么除11,在于计算校验码时的函数。请看下边的函数:
公式如下:
∑(a[i]*W[i]) mod 11 ( i = 2, 3, ..., 18 )                    (公式一)
"*" 表示乘号
i--------表示身份证号码每一位的序号,从右至左,最左侧为18,最右侧为1。
a[i]-----表示身份证号码第 i 位上的号码
W[i]-----表示第 i 位上的权值 W[i] = 2^(i-1) mod 11

上述计算方法是从右至左,如果从左至右,第1-17位权重W[i]的计算结果为:

7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

计算公式一 令结果为 R
根据下表找出 R 对应的校验码即为要求身份证号码的校验码C。
R 0 1 2 3 4 5 6 7 8 9 10
C 1 0 X 9 8 7 6 5 4 3 2
由此看出 X 就是 10,罗马数字中的 10 就是X,所以在新标准的身份证号码中可能含有非数字的字母X。

         根据上述校验码计算公式和原理,设置条件格式检查校验码方法如下:

假定身份证在B列(均为18位),检查其校验码是否正确,不正确的用红色字体显示。方法如下:
选中B列,“格式”/“条件格式”,将条件设为:

公式=RIGHT(B1)<>MID("10X98765432",MOD(SUMPRODUCT(MID(B$1,ROW(1:17),1)*MOD(2^(18-ROW(1:17)),11)),11)+1,1)

点“格式”,将字体设为红色即可。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多