精华内容
下载资源
问答
  • (1)第1、2数字表示:所在省(直辖市、自治区)的代码; (2)第3、4数字表示:所在地级市(自治州)的代码; (3)第5、6数字表示:所在区(县、自治县、县级市)的代码; (4)第7—14数字表示:出生年、...

    一、身份证号码作为独一无二代表公民信息的号码,它的组成是由一下的数字表示的:
    (1)第1、2位数字表示:所在省(直辖市、自治区)的代码;
    (2)第3、4位数字表示:所在地级市(自治州)的代码;
    (3)第5、6位数字表示:所在区(县、自治县、县级市)的代码;
    (4)第7—14位数字表示:出生年、月、日;
    (5)第15、16位数字表示:所在地的派出所的代码;
    (6)第17位数字表示性别:奇数表示男性,偶数表示女性;
    (7)第18位数字是校检码:是根据《中华人民共和国国家标准GB 11643-1999》中有关公民身份号码的规定,根据精密的计算公式计算出来的。

    二、校验码的计算方法:
    1、将前面的身份证号码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,其中的X是罗马数字10;
    5、通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ;如果余数是10,身份证的最后一位号码就是2

     

    
    
    /**
     * 身份证验证规则:
     * 第十八位数字(校验码)的计算方法为:
     * 1.将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
     * 2.将这17位数字和系数相乘的结果相加与11进行相除。
     * 3.余数0 1 2 3 4 5 6 7 8 9 10这11个数字,其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2。
     * 4.例如 余数为 0 , 则身份证最后一位就是1
     *       余数为 2 , 则身份证最后一位就是罗马数字X
     *       余数为 10 , 则身份证最后一位就是2
     * @ClassName: IdCardUtil
     * @date: 2019/10/24 17:10
    */
    @Slf4j
    public class IdCardUtil {
        /**
         * 校验是否为身份证号码
         * @param IdCardNo
         * @return
         */
        public static  boolean isIdCardNo(String IdCardNo){
    
            boolean IdCardflag =  false;
    
            try {
    
                if (!StringUtils.isEmpty(IdCardNo) && IdCardNo.length() == 18){
                    // 1.将身份证号码前面的17位数分别乘以不同的系数。
                    int[] coefficientArr = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
                    int sum = 0;
                    for (int i = 0; i < coefficientArr.length; i++) {
                        // Character.digit 在指定的基数返回字符ch的数值。如果基数是不在范围内MIN_RADIX≤基数≤MAX_RADIX或如果该值的通道是不是一个有效的数字在指定的基数-1,则返回。
                        // ch - the character to be converted(要转换的字符)
                        // ch - int类型,是字符的ASCII码,数字的ASCII码是48-57
                        // radix - the radix(基数) ----也就是进制数
                        sum += Character.digit(IdCardNo.charAt(i), 10) * coefficientArr[i];
                    }
    
                    // 余数数组
                    int[] remainderArr = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    
                    // 身份证号码第18位数组
                    int[] lastArr = { 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 };
                    String matchDigit = "";
                    for (int i = 0; i < remainderArr.length; i++) {
                        int j = remainderArr[i];
                        if (j == sum % 11) {
                            matchDigit = String.valueOf(lastArr[i]);
                            if (lastArr[i] > 57) {
                                matchDigit = String.valueOf((char) lastArr[i]);
                            }
                        }
                    }
    
                    if (matchDigit.equals(IdCardNo.substring(IdCardNo.length() - 1))) {
                        IdCardflag =  true;
                    }
                }
    
            }catch (Exception e) {
    
                log.error(String.format("校验身份证出现异常%s",e));
            }
    
            return  IdCardflag;
    
        }
    
        /**
         * 身份证号码脱敏 只脱敏月日四位
         */
        public  static  String getNewIdCardNo(String IdCardNo){
    
            String IdCardNoTemmp = IdCardNo;
            if (isIdCardNo(IdCardNo)){
                StringBuilder sb = new StringBuilder(IdCardNo);
                sb.replace(10, 14, "****");
                IdCardNoTemmp = sb.toString();
            }
    
            return IdCardNoTemmp;
        }
    }

     

    展开全文
  • 奇偶校验位

    万次阅读 2018-09-26 10:28:04
    奇偶校验位 奇偶校验位(parity bit)或校验比特(check bit)是一个表示给定位数的二进制数中1的个数是奇数还是偶数的二进制数。奇偶校验位是最简单的错误检测检测码。 奇偶校验位有两种类型:偶校验位与奇校验位。...

    奇偶校验位

    奇偶校验位(parity bit)或校验比特(check bit)是一个表示给定位数的二进制数中1的个数是奇数还是偶数的二进制数。奇偶校验位是最简单的错误检测检测码。

    奇偶校验位有两种类型:偶校验位与奇校验位。

    如果一组给定数据位中1的个数是奇数,那么偶校验位就置为1,从而使得1的个数是偶数。如果给定一组数据为位中1的个数是偶是,那么奇校验位就置为1,使得总的1的个数是奇数。

    偶校验位实际上是循环冗余校验的一个特例,通过多项式x+1x+1得到1位CRC。

    错误检测

    如果传输过程中包括检验位在内的奇数个数据位发生改变,那么奇偶校验位将出错表示传输过程有错误发生。因此,奇偶校验位是以后再那个错误检测码,但是由于没有办法确定哪一位出错,所以它不能进行错误校正。发生错误时必须扔掉全部数据,然后从头开始传输数据。在噪声很多的媒介上成功传输数据可能要花费很长的时间,甚至根本无法实现。但是奇偶校验位也有它的优点,它是使用一位数据能够达到的最好的校验码,并且它仅仅需要一些异或门就能够生成。

    使用

    由于它很简单,所以奇偶校验位用于许多计算机硬件中,遇到麻烦时能够重新操作或者通过简单的错误检测就能起到很大作用的场合。例如SCSI总线使用奇偶校验位检测传输错误,许多微处理器的指令高速缓存中也包括奇偶校验位保护。因为指令缓存数据时主内存数据的副本,所以在发生错误的时候能够抛弃错误数据并重新取回数据。

    在串行通信中,常用的格式时7个数据位、1个校验位、1到2个停止位。这种格式用方便的8位字节巧妙地适应了所有的7位ASCII字符。也可以使用其它的格式表示,8位数据加上1个校验位可以传输任意的8位字节数据。

    在串行通信中,奇偶校验位通常是由UART这样的接口硬件生成、校验的,在接收方,通过接口硬件中的寄存器的状态位传给CPU以及操作系统。错误数据的恢复通常是通过重新发送数据,这个过程通常由如操作系统输入输出程序这样的软件处理的。

    奇偶校验块

    一些冗余磁盘阵列(RAID)使用奇偶校验块实现冗余。如果阵列中的一块磁盘出现故障,工作磁盘中的数据块与奇偶检验快一起来重建丢失的数据。

    下面的图表每列表示一个磁盘,假设A1 = 00000111、A2 = 00000101以及A3 = 00000000。A1、A2、A3异或得到下面的Ap等于00000010.如果第二个磁盘出现故障,A2将不能被访问,但是可以通过A1、A3与Ap异或进行重建:
    A1 XOR A3 XOR Ap = 00000101

    冗余磁盘阵列
    A1 A2 A3
    Ap B1 B2
    Bp C1 C2
    C3 C4 Cp

    注意:数据块是格式A#,奇偶校验块是Ap。

    展开全文
  • 含义是奇校验:所有传送的位(含字符的各位和校验位的1的个数为奇数.如:8位数据:0110101 1的个个数为偶数,我们加一个1,变为奇数,所以校验位为1.如:8位数据:0110001 1的个个数为奇数,我们加一个0仍为奇数,所以校验位为...
    
    
    	奇校验:所有传送的位(含字符的各位和校验位的1的个数为奇数.如:8位数据:0110101   1的个
    个数为偶数,我们加一个1,变为奇数,所以校验位为1.如:8位数据:0110001   1的个个数为奇数,我们加
    一个0仍为奇数,所以校验位为0.
    		偶校验:所有传送的位(含字符的各位和校验位的1的个数为偶数.如:8
    位数据:0110101   1的个个数为偶数,我们加一个0,仍为偶数,所以校验位为0.如:8位数据:0110001   1
    的个个数为奇数,我们加一个1,变为偶数,所以校验位为1
    	
    (1)在信号线上共有两种状态,可分别用逻辑1(高电平)和逻辑0(低电平)来区分。在发送器空闲时,数据线应该保持在逻辑高电平状态。
    	(2)起始位(Start Bit):发送器是通过发送起始位而开始一个字符传送,起始位使数据线处于逻辑0状态,提示接受器数据传输即将开始。
    	(3)数据位(Data Bits):起始位之后就是传送数据位。数据位一般为8位一个字节的数据(也有6位、7位的情况),低位(LSB)在前,高位(MSB)在后。
    	(4)校验位(parity Bit):可以认为是一个特殊的数据位。校验位一般用来判断接收的数据位有无错误,一般是奇偶校验。在使用中,该位常常取消。
    	(5)停止位:停止位在最后,用以标志一个字符传送的结束,它对应于逻辑1状态。
    	(6)位时间:即每个位的时间宽度。起始位、数据位、校验位的位宽度是一致的,停止位有0.5位、1位、1.5位格式,一般为1位。
    	(7)帧:从起始位开始到停止位结束的时间间隔称之为一帧。
    	(8)波特率:UART的传送速率,用于说明数据传送的快慢。在串行通信中,数据是按位进行传送的,因此传送速率用每秒钟传送数据位的数目来表示,
    称之为波特率。如波特率9600=9600bps(位/秒)。
    
    
    
    
    展开全文
  • 海明校验码——确定校验位

    千次阅读 2017-03-14 10:23:55
    转载:海明校验码–确定校验位计算机组成中的海明校验码,相信学过的都会有了解,那么对其中校验位的确定,我想似乎有些人不是很明白,今天我来详细的把如何确定校验位分享一下首先看下基本的概念 :2^r≥k+r+1 ...

    转载:海明校验码–确定校验位

    计算机组成中的海明校验码,相信学过的都会有了解,那么对其中校验位的确定,我想似乎有些人不是很明白,今天我来详细的把如何确定校验位分享一下

    首先看下基本的概念  :
    
    2^r≥k+r+1  
    

    其中r为校验位 ,k为信息位 信息位是已知的,那么如何确定校验位呢,用一个例子来说明

    例如:二进制码1011 求它的海明编码 步骤如下:

    1、首先确定信息位,也就是1011了,那么随之K的长度也就知道了是4位

    2、确定校验码是几位 根据上述公式我们去试最接近而且满足条件的值,1011的校验位是3,也就是r=3,这样刚好满足了条件

    3、确定了校验位的位数之后就是来确定校验位的值以及分配校验位了

    首先来看分配校验位: 一般来说校验位都是放在2^n的位置处,也就是1、2、4、8….

    其次就是确定分组(也就是确定校验位的值)

    通过初步的解题我们知道了校验位+信息位一共是7位,那么我们首先来画一个表,分别把这些数据填进去

    这里写图片描述

    注释: 我分别把七个位置用1~7来表示了 在填写信息为的时候也要把高位的数据填到高的位置 ,例如1011 就要类似图中的填法

    确定校验位的分组原则:

    1.每个位置的校验位确定: 要想校验第几位 (i) 那么i就等于校验位所在位置的加和 举个简单的例子,加入我要教研第3位,那么3=1+2 也就是3 由第一个和第二个校验位来校验,照这样的算法,以此类推,我们就可以知道每个位置都需要哪个校验位来校验了

     下面是1011的校验位分配表
    

    这里写图片描述

    按上述方法分配好后,我们已经明确的知道了每个位置都需要利用哪些位置来校验,下面也是关键的一步了

    我们要把这些数据汇总起来,也就是每个校验位都校验了哪些位置,就分别把这些位置的值按亦或计算(也就是相同的值就为0 ,不相同时就取1) 这样就得到了每个校验位的值了

    下面我们来看看,每个校验位都分别校验了哪些位置 :

    这里写图片描述

    由此表可以看出对于校验位所要校验的位置,已经确定了,余下的就是计算检验位的值了,(利用亦或运算)
    R1=0⊕1⊕1⊕1=>1;
    R2=0⊕1⊕0⊕1=>0;
    R3=0⊕1⊕0⊕1=>0;
    除去有值得位其余为用零补足
    位置:1 2 3 4 5 6 7
    信息位: r r 1 r 1 0 1
    补足后:0 0 1 0 1 0 1

    可得到r1 r2 r3 的值分别为 1,0,0 (如果此处你不会亦或运算,那么建议百度查一查,练习一个简单的例子就会和明白了)

    到此位置,我们就求出了校验位的值,同时海明码也就出来了

    那么对于海明码的验证纠错等知识我就不在这里介绍了,以上就是我对此部分知识的理解,欢迎交流学习

    展开全文
  • 我用windows上的串口调试助手和公司设备上的串口通信,串口调试助手设置为无校验时无法通信,设置为奇校验、偶校验、MARK校验,SPACE校验时都可以正常通信。当我用linux上的串口调试软件与公司的该设备通信时,串口...
  • 奇偶校验位:可以选择奇校验/偶校验/无奇偶校验位 假设我们选择默认配置为:波特率位9600,停止位为1数据位为8,奇偶校验位为无。那么一个数据的长度=起始位(1)+数据位(8)+奇偶校验位(0)+停止位(1)。 按照...
  • 海明校验码--确定校验位

    千次阅读 2017-08-03 09:29:47
    http://blog.csdn.net/yudandan10/article/details/11878421计算机组成中的海明校验码,相信学过的都会有...: 2^r≥k+r+1 其中r为校验位 ,k为信息位 信息位是已知的,那么如何确定校验位呢,用一个例子来说明 例
  • 公民身份号码是一系列组合码,由十七位数字本体码和一位校验码组成。 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。 18位身份证最后一位校验码的计算方法 1、将...
  • 奇偶校验位学习理解

    千次阅读 2020-09-15 19:35:46
    一个字节一般有8bit,若是需要进行奇偶校验需要添加一个码元,所以发送接收时是8位数据位,一位校验位。 奇偶校验就是指每次发送接收的每一帧数据加上校验码之后1的个数是奇数还是偶数 奇偶校验码是奇校验码和偶...
  • iviewUI校验问题 ...其次,在校验中多加一层正则校验(整数或2小数), /^\d+(.\d{1,2})?$/ 最后如果有多个校验规则,可继续追加。 rules: { unitPrice: [ { required: true,message: "单价不能为空",
  • 条码校验位计算工具

    2013-01-24 13:22:59
    条码校验位计算工具 包括13位条码 包括18位条码
  • 奇偶校验位产生器

    2019-10-03 19:18:45
    1、如果数据位中包含偶数个1 校验位(P)就会置1,如果数据位中包含奇数个1,校验位(P)就会置0。数据位中1的个数加上校验位(P)总为奇数,这就是奇校验。 例: 0010_0001, P = 1 ===>Reslut=1_0010_0001,在Reslut...
  • C51奇偶校验位

    2020-12-01 11:02:24
    在51单片机中,可以选择发送第9位作为校验位,那是不是就是需要在接收中断中判断校验位?例如收到sbuf数据0x90,就需要循环移位判断1的个数,再加上RB的1或者0?发送的时候是不是也是需要先计算,然后将1或者0送到TB...
  • Java增加校验位

    千次阅读 2017-04-25 09:02:48
    public abstract class SerialResouce {//工作中的简单例子,大家根据需求自己修改校验规则 public abstract String getNextSerialNo(String year, String type) throws Exception; /** * 获取序号 * *...
  • 为了方便ModelBus协议校验位的计算和核对,也可方便程序员编写ModelBus协议校验位算法,希望能有用
  • java计算身份证的校验位 生成身份证号的检验位。 18位身份证号其实是有规则的, 前17位有自己的代表的含义,第18位是校验位,很多判断是否合格的身份证号的代码就是判断校验位。 前6位是 省、市、县/区的编号。...
  • DLT645校验位

    千次阅读 2019-06-12 14:00:20
    DLT645检验是把检验之前的所有16进制接起来去最后两数 /** * DLT645校验码 */ public class DLT655 { public static String makeCheck(String data) { if (data == null || data.equals("")) { ...
  • MEID校验位算法

    2014-11-11 11:04:32
    MEID校验位算法 (1).将偶数位数字分别乘以2,分别计算个位数和十位数之和,注意是16进制数 (2).将奇数位数字相加,再加上上一步算得的值 (3).如果得出的数个位是0则校验位为0,否则为10(这里的10是16进制)减去...
  • STM32 USART使用奇偶校验位

    千次阅读 2018-01-22 11:24:21
    STM32 USART 无校验位时,数据位常用8位 当使用就校验位时,数据位应设置为9位. 奇偶校验位也包含在数据位中。 详见参考手册:
  • 给定给定一个9位数字的ISBN,求其校验位。ISBN格式为2-02-033598, 校验位的计算方法如下:从左到右依次将各位数字乘10,9,8,……,2, 求出其和S,作模运算得M=S mod 11。若11-M在1和9之间, 校验位即为该数字;...
  • 设置波特率,奇偶位,校验位,可以调试modbus等串口协议,连接串口后,点击打开串口按钮,设置波特率,奇偶位,校验位,停止位收打开串口按钮就可以成功连接串口,之后程序会自动检测收到的串口报文;需要发送报文时...
  • 位校验的程序,可以自由的修改,当位大于8位的时候,选择字节校验会更快一些。字节校验位16位的,即2字节校验的。校验生成多项式在里面有说明:CRC-ITU x^16+X^12+X^5+1
  • ICCID共20位, 最后一位的校验位计算规则如下: 取前19位 . 从左到右奇数位开始. 乘以2 然后计算个位与十位数之和. 将所有偶数位的数字与上一步得到的值全部相加 将上一步得到的值乘以9 然后取余. 得到的值就是...
  • 众所周知,18位的身份证号码,最后一位是校验位,可能是0到9和X中的一个。它的校验规则可参考。http://www.coozhi.com/youxishuma/hulianwang/23169.html 其实,很多票据号也是采用了相同的校验位算法。这些票据号...
  • 偶校验程序:输入一个字符,编写一个程序判断这个字符中1的个数,如果是偶数个1,则校验位(字符最高位)为0,如果是奇数个1,则校验位为1。并显示加入校验位前后该字符的二进制代码。 编译结果:字符‘0’ASCLL码为...
  • 奇校验程序:输入一个字符,编写一个程序判断这个字符中1的个数,如果是偶数个1,则校验位(字符最高位)为1,如果是奇数个1,则校验位为0。并显示加入校验位前后该字符的二进制代码。 编译结果:字符‘0’ASCLL码为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,867
精华内容 6,346
关键字:

校验位校验