• 二代身份证号码编码规则


    1.1 编码格式

    1999年我国颁发了第二代居民身份证号,公民身份号码为18位,且终身不变。

    居民身份证格式如:ABCDEFYYYYMMDDXXXR

    1.1.1地址码(ABCDEF)

    表示登记户口时所在地的行政区划代码(省、市、县),如果行政区划进行了重新划分,同一个地方进行户口登记的可能存在地址码不一致的情况。行政区划代码按GB/T2260的规定执行。

    1.1.2 出生日期码(YYYYMMDD)

    表示该居民的出生年月日,年4位数字,月和日分别用2位数字表示,如19491001,;出生日期码是按GB/T 7408的规定执行的。

    1.1.3 顺序码(XXX)

    表示同一地址码区域内,同年、同月、同日生的人所编订的顺序号,根据自己身份证的顺序码就可以知道:与我们同年同月同日生的同性至少有多少个,且在我们之前登记户籍的有多少人。身份证顺序码的奇数分配给男性,偶数分配给女性。这就是为什么倒数第二位奇数表示男生,偶数表示女生。

    1.1.4 校验码(R)

    R之前的17位被称为本体码,R是根据本体码,按照校验码算法(ISO 7064:1983,MOD 11-2校)计算出来的。当我们输入身份号码进行实名认证的时候,根据校验码算法可以初步判断你输入身份证号码格式是否正确。

    1.2 校验码

    1、将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 ;

    位置序号

       1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    加权因子

    7

    9

    10

    5

    8

    4

    2

    1

    6

    3

    7

    9

    10

    5

    8

    4

    2

     

     

     

     

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

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

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

    余数

        0

       1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    校验码

        1

    0

    X

    9

    8

    7

    6

    5

    4

    3

    2

     

     

     

     

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

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

    首先:我们计算3*7+4*9+0*10+5*5+...+1*2,前17位的乘积和是189

    然后:用189除以11得出的结果是商17余2

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

  • 相关阅读:
    一天摄入多少蛋白质比较合理?
    给函数添加元数据(python)
    反转链表(C++实现)
    删除链表的中间节点(C++实现)
    在双向链表中删除倒数第K个链表节点(C++实现)
    在单链表中删除倒数第K个节点(C++实现)
    二叉树的创建及遍历(递归和非递归C++实现)
    删除排序数组中的重复项(C++实现)
    打印两个有序链表的公共部分(C++实现)
    用一个栈实现另一个栈的排序(C++实现)
  • 原文地址:https://www.cnblogs.com/toray-xiaopm/p/8436550.html
Copyright © 2020-2023  润新知