注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

——挨踢民工 Playkid——

一个搞IT的人!也是一个被IT搞的人!因为迷恋互联网而一网情深、最后落网为虫!

 
 
 

日志

 
 
关于我

iT界的务工人员~体力劳动者!起的比鸡早~睡的比狗晚~吃的比猪差~做的比牛多。

网易考拉推荐
GACHA精选
 
 

公民身份证号码的编排规则  

2011-08-26 23:54:25|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
  现在普遍使用的都是18位的身份证号码,由17位数字本体码和1位校验码组成。作为尾位的校验码,采用ISO7064:1983,MOD11-2校验码系统,是根据校验公式,由本体码决定的,用来验证录入或转录过程的准确性。

  校验码是由前17位数按统一的公式计算出来的。如果根据前17位计算得到第18位校验码,再将计算得到的校验码与输入的身份证号码的第18位数进行比较就可以判断身份证号码是否存在错误。

  校验公式要求:按照从右到左的顺序,右边第一位(即校验码)乘以7,第二位乘以9,第三位乘以10,以此类推,之后要求这18个乘积的和除以11求余,通过余值得到对应的校验码(0-1 1-0 2-X、3-9 4-8 5-7 6-6 7-5 8-4 9-3 10-2)。

  公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。


 【18位的身份证号码编排规则】

  ①地址码:(前6位)所在县(市、旗、区)的行政区划代码
   全国县及县以上行政区划代码表http://www.stats.gov.cn/tjbz/xzqhdm/t20021125_46781.htm

  ②出生日期码:(第7位到第14位)
   格式为八位数「20080808」,与旧身份证六位数「080808」不同。

  ③顺序码:(第15位到17位)县、区级政府所辖派出所的分配码
   每个派出所分配码为10个连续号码,例如A派出所是「000-009」、B派出所是「060-069」。其中第17位奇数分给男性,偶数分给女性。

  ④校验码:(最后1位)
   根据前面17位数字码按统一的公式计算出来的。

 【第二代身份证的尾数(检验码)计算方法】

  ①输入身份证号码→设置为文本格式
   数字超过了11位,系统会自动变成科学计数法的形式。

  ②数据→分列-固定宽度
   将一个单元格中的数据分隔到多个单元格,每个数字占1个单元格。

  ③选择其中一个单元格Ctrl+Shift+*(星号)
   选定活动单元格周围的当前数据区域

  ④复制Ctrl+C→选择性粘贴→转置→粘贴到A1:A17
   把行变成了列

  ⑤「7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2」(②→④→粘贴到B1:B17)
   前十七位数字本体码加权求和公式S=Sum(An*Bn),n=1,…,17
   An:表示第n位置上的身份证号码数字值
   Bn:表示第n位置上的加权因子
   Bn:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

——⑥S=SUMPRODUCT(A1:A17,B1:B17)
   =A1*7+A2*9+A3*10+A4*5+A5*8+A6*4+A7*2+A8*1+A9*6+A10*3+A11*7+A12*9+A13*10+A14*5+A15*8+A16*4+A17*2

  ⑦Y=Mod(S,11)
   =Sum(An*Bn),n=1,…,17
   =Mod(SUMPRODUCT(A1:A17,B1:B17),11)

  ⑧通过Y值找到对应的校验码Z
   Z=(0-1 1-0 2-X 3-9 4-8 5-7 6-6 7-5 8-4 9-3 10-2)

———统一公式(⑥→⑧)
   R=MOD((12-Mod(SUMPRODUCT(A1:A17,B1:B17),11)),11)
   Z=IF(R=10,"X",R)
   如果R=10,校验码Z为字母X;如果R≠10,校验码Z为数字R值。


 【15位的身份证号码编排规则】

  ①1~6位为地区代码;

  ②7~12位为出生年月日;

  ③第13~15位为顺序号,并能够判断性别,奇数为男,偶数为女。


 【15位的身份证号码转换为18位的身份证号码】

  补充出生年份前两位数19、添加尾数检验码。

  假设A列自A2起是身份证号(15位或18位)

  ①B列中身份证号全部改为18位,输入数组公式:
             =IF(LEN(A2)=15,REPLACE(A2,7,,19)&MID("10X98765432",MOD(SUM(MID(REPLACE(A2,7,,19),ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1),A2)
   注意:数组公式输入后一定不要按回车,而是按Ctrl+Shift+Enter,Excel将在公式两边自动加上花括号{},自己键入花括号无效。

  ②C列中身份证号全部改为15位,输入公式:
   =IF(LEN(A2)=15,A2,LEFT(REPLACE(A2,7,2,),15))
  评论这张
 
阅读(2011)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016