前几天朋友拿着手机给我看一个身份证号码,问"996开头是哪个省的身份证?我在网上搜了半天都没找到"。我一看,他说的"996"根本不在前六位,是身份证号码中间靠后的三个数字。他以为整串数字里出现996就是地区代码,其实完全搞混了。
这个误会非常普遍。996在身份证号码里确实有特殊含义,但它不是地区代码,而是顺序码中专门留给百岁以上老人的四个编号之一。中国现行身份证号码里不存在"996"开头的地区代码——前两位"99"这个区间是留给外国人永久居留身份证的,不是给中国公民的行政区划代码。
查"996身份证"的人,其实混淆了三种情况
| 1 | 把第15-17位顺序码中的"996"当成前6位地区代码——这是最常见的情况,996是百岁老人专用编号 |
| 2 | 看到前两位是"99",以为是中国公民身份证——其实"9"开头是外国人永久居留身份证,不是普通居民身份证 |
| 3 | 把某个含996的地区代码(如XX996X)误以为996就是独立开头——实际上996是中间某一段,前面还有两位省代码 |
一、身份证号码18位的完整结构,先把每一段搞清
要理解"996"在身份证里的真实含义,得先把18位号码的四段结构拆开看。

| 段落 | 位数 | 含义 | 举例 |
|---|---|---|---|
| 地址码 | 第1-6位 | 首次申领身份证时的户籍所在地行政区划代码。第1-2位是省,第3-4位是市,第5-6位是区县 | 440305 = 广东省深圳市南山区 |
| 出生日期码 | 第7-14位 | 出生年月日,格式YYYYMMDD | 19900520 = 1990年5月20日 |
| 顺序码 | 第15-17位 | 同一地区同一天出生的人按顺序编号。奇数分给男性,偶数分给女性。996、997、998、999是百岁以上老人专属编号 | 996 = 百岁男性老人 |
| 校验码 | 第18位 | 根据前17位通过MOD 11-2算法计算得出,0-9或X | X = 罗马数字10 |
看到了吗?"996"如果出现在身份证号码的第15-17位,它是顺序码,跟地区归属没有任何关系。它只说明一件事:这位持证人是百岁以上的老人。
二、996、997、998、999——四个百岁老人的专属编号
根据国家标准GB 11643-1999《公民身份号码》,第15-17位顺序码中,996、997、998、999这四个号码被单独划出来,不再分配给普通户籍人口的派出所编码范围,而是专门留给百岁以上老人。
996
男性百岁老人
偶数分配给男性(百岁老人特殊规则)
997
女性百岁老人
奇数分配给女性(百岁老人特殊规则)
998
男性百岁老人
偶数,996的补充编号
999
女性百岁老人
奇数,997的补充编号
这里有一个容易搞混的地方:普通身份证的顺序码规则是"奇数男、偶数女",第17位奇数=男性,偶数=女性。但百岁老人的四个编号分配逻辑是:996和998给男性,997和999给女性。也就是说,996虽然本身是偶数,但它被指定给男性百岁老人使用,这是特殊规则覆盖了常规规则。
一个有意思的细节:这四个编号之所以预留出来,是因为普通顺序码的分配范围是000-995,每个派出所分配10个连续号码。996-999这四个号码被单独保留,既避免了和派出所编号冲突,又能在系统中快速识别百岁老人群体——公安部门在做人口统计时,直接用顺序码就能筛出百岁老人的数据。
三、那"996"能不能是前六位地区代码的一部分?
不能。原因要从中国行政区划代码的编码体系说起。
前六位地址码的规则是:前两位是省代码,范围从11到65(中国大陆31个省市区),71-82是港澳台。第一位数字1-6分别对应华北、东北、华东、中南、西南、西北六大地理区域。比如1开头=华北(北京11、天津12、河北13、山西14、内蒙古15),4开头=中南(河南41、湖北42、湖南43、广东44、广西45、海南46)。
在现行的GB/T 2260标准里,第一位数字只用到1-6和7-8(港澳台),根本没有9开头的省代码。所以"996"作为前三位地区代码开头,在逻辑上就不可能存在。
| 第一位数字 | 地理区域 | 包含省份(前两位代码) |
|---|---|---|
| 1 | 华北 | 北京11、天津12、河北13、山西14、内蒙古15 |
| 2 | 东北 | 辽宁21、吉林22、黑龙江23 |
| 3 | 华东 | 上海31、江苏32、浙江33、安徽34、福建35、江西36、山东37 |
| 4 | 中南 | 河南41、湖北42、湖南43、广东44、广西45、海南46 |
| 5 | 西南 | 重庆50、四川51、贵州52、云南53、西藏54 |
| 6 | 西北 | 陕西61、甘肃62、青海63、宁夏64、新疆65 |
| 7-8 | 港澳台 | 台湾71、香港81、澳门82 |
| 9 | 外国人 | 外国人永久居留身份证专用(非普通居民身份证) |
所以如果你看到一张身份证前两位是"99",那不是中国公民的居民身份证,而是外国人永久居留身份证。新版外国人永久居留证("五星卡")也是18位号码,格式和中国身份证类似,但第一位固定为"9"以示区分。后面的编码规则也和中国居民身份证不同——第3-5位是持证人国籍的国家代码,而非中国的行政区划代码。
总结一下"996能不能是地区代码"这个问题:如果你看到的996出现在身份证前六位——那这张证大概率是外国人永久居留身份证(前两位99),后面四位编码规则也跟普通身份证不一样;如果你看到的996出现在身份证中间位置(第15-17位)——那说明持证人是一位男性百岁老人。两种情况都不代表"996是某个省市的地区代码"。

四、怎么正确查询身份证号码的归属地
既然搞清楚996不是地区代码,那如果想查一张身份证号码的归属地,应该怎么看?
看前两位:确定省份
对照上文的省代码表,11=北京、44=广东、32=江苏、51=四川……这一步最简单,基本上大家都不会搞错。
看第三四位:确定地级市
比如4401=广东省广州市,4403=广东省深圳市,4406=广东省佛山市。这个级别的代码在网络上基本都能查到。
看第五六位:确定区县
比如440305=深圳市南山区,440306=深圳市宝安区。区县级代码最细,部分已经撤销合并的区县代码可能查不到最新对应关系。
在线查询工具
民政部官网(dmfw.mca.gov.cn)有官方行政区划代码查询;各类身份证归属地查询网站可以直接输入前6位查归属地,但注意数据更新可能滞后。
有一点要说明:身份证前六位代表的是"首次申领身份证时的户籍所在地",不是现在的户籍地,更不是籍贯或出生地。一个人可能出生在湖南、后来户口迁到了广东,但他的身份证前六位仍然是湖南的代码(首次申领地),不会因为迁户口而改变。这一点经常被误解。
五、身份证号码里还有哪些容易搞混的数字
除了"996是不是地区代码"这个经典误会,身份证号码里还有几个高频的误解场景。
| 常见疑问 | 正确答案 |
|---|---|
| 最后一位X是什么意思? | 校验码计算结果为10时用X代替,X是罗马数字10,不是字母。不读"叉",读"十" |
| 第17位奇数一定是男性? | 在普通编号范围内(000-995)是的,奇数=男、偶数=女。但百岁老人编号996-999有特殊规则(见上文) |
| 身份证号码可以改吗? | 终身唯一,不可更改。即使迁户口、改名、变性,身份证号码本身不变。只有一种情况会变号:从15位旧号升级到18位新号时校验码变了 |
| 为什么有些身份证前6位在网上查不到? | 区县级行政区划时有调整(撤县设区、合并拆分等),旧的代码可能已经停用。查民政部官网的最新行政区划代码为准 |
| 15位和18位身份证有什么区别? | 15位是1999年以前的旧版:6位地址码+6位出生日期(YYMMDD,缺世纪)+3位顺序码。18位多了世纪位和校验码。现在新申领的都是18位 |
一个需要提醒的事:网上有很多所谓的"身份证号码生成器"或"身份证归属地查询工具",这些工具的数据库不一定准确。尤其是区县级的行政区划代码,近几年很多地方撤县设区、合并调整,旧代码和新代码的对应关系不是所有工具都及时更新了。查归属地最权威的来源是民政部全国行政区划信息查询平台(xzqh.mca.gov.cn),其他第三方工具只能参考。
六、回到最初的问题:看到"996"怎么判断它属于身份证的哪一段
其实判断方法很简单,就看你手上的"996"出现在18位号码的什么位置。
情况A:996出现在第1-3位
比如 996XXX XXXX... → 这不是中国公民身份证。第一位"9"是外国人永久居留身份证的标识。后面的编码规则也跟中国身份证不同。
情况B:996出现在第3-5位
比如 XX996X XXXX... → 要看前两位是哪个省。前两位是省代码,第3-4位是市代码。如果前两位是某个省代码,那996后面的部分要结合完整的6位地址码来查。
情况C:996出现在第15-17位
比如 XXXX...XXXX 996 X → 这是顺序码中的百岁老人编号。这位持证人是一位男性百岁以上老人。跟地区归属没有任何关系。
绝大多数搜索"996身份证查询"的人,遇到的都是情况C——在身份证中间看到了996,误以为它是前六位地区代码,然后去搜"996是哪里的身份证",结果当然搜不到,因为它在身份证号码里的功能根本就不是标识地区。
身份证号码设计是一个精密的编码系统,18位数字各司其职。前6位告诉你"从哪来",中间8位告诉你"什么时候出生",顺序码告诉你"在同类人中排第几",最后1位校验码确保前面17位没写错。把不同位置的数字功能搞混,就像把车牌号里的数字当成排量——完全对不上号。
如果你在工作中需要批量处理身份证号码的归属地查询——比如做用户数据分析、客户归属地统计——手工一条条查效率太低。可以用Excel的VLOOKUP配合全国行政区划代码表来做批量匹配,也可以写一个简单的Python脚本调用民政部公开的行政区划数据接口。
做数据类网站(比如身份信息核验、用户画像分析工具)的话,WP建站系统的数据库结构很适合存放和维护这种对照表数据——一张行政区划代码表存MySQL里,前端查询页面用PHP直接读库,配合HTML直出的SEO友好页面结构,查询工具类页面的搜索引擎收录效果比JS动态渲染的页面好得多。
最后说一句:身份证号码是一部微型的个人信息档案。18个数字承载了户籍、出生日期、性别、校验四层信息。搞清楚每个位置代表什么,就不会再把百岁老人的编号当成某个城市的代码了。
