首页 > 编程知识 正文

奇校验英文怎么说,偶校验和奇校验

时间:2023-05-04 17:07:50 阅读:225643 作者:1419

题目

题目描述:
输入一个字符串,然后对每个字符进行奇校验,最后输出校验后的二进制数(如’3’,输出:10110011)。
输入描述:
输入包括一个字符串,字符串长度不超过100。
输出描述:
可能有多组测试数据,对于每组数据,
对于字符串中的每一个字符,输出按题目进行奇偶校验后的数,每个字符校验的结果占一行。

理解

奇校验:
校验数据完整性的一种方法,一个字节的8个数据位与校验位加起来之和有奇数个 1。
校验线路在收到数后,通过发生器在校验位填上 0 或 1,以保证和是奇数个 1。
因此,校验位是 0 时,数据位中应该有奇数个 1;
而校验位是 1 时,数据位应该有偶数个 1。
如果读取数据时发现与此规则不符,CPU会下令重新传输数据。

代码过程:
进行与运算,得到其二进制形式及 1 的个数;
根据得到的 1 的个数与整形 1 进行与运算,如果与结果为 0 ,则校验位置为 1;

代码 import java.util.Scanner;public class Main { public static void Test(char[] s) { //一个字节8个数据位 int[] result = new int[8]; for(int i=0; i<s.length; i++) { int n = 0x01; int j = 7; int sum = 0; //进行7次与运算,得到其二进制形式及 1 的个数 while(j>0) { // 与运算 result[j] = (s[i] & n) == 0 ? 0 : 1; if(result[j] == 1) { sum++; } n = n << 1; j--; } // 进行校验 if((sum & 1) == 0) { result[0] = 1; } for(int k=0; k<result.length; k++) { System.out.print(result[k]); } result[0] = 0; //一次完成,重新置0 System.out.println(); } } public static void main(String[] args) { Scanner in = new Scanner(System.in); while(in.hasNext()) { String str = in.nextLine(); Test(str.toCharArray()); } }}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。