想直接看代码的人请点击这里!
输入字符串,对各个字符进行奇偶校验,最后输出校验后的二进制数,例如“3”(输出: 10110011 )。
输入描述:
输入包含字符串,字符串的长度不超过100。
输出描述:
可能有多个测试数据,但针对各个数据,
对于字符串中的每个字符,输出每个标题进行奇偶校验的数量,每个字符校验的结果占一行。
输入:
3
3a
输出:
10110011
10110011
01100001
题目解析:
我们知道在网络数据的传输中可能会出现很多问题。 为了避免接收到错误的数据而进行错误的操作,收到数据时,我们往往会进行一系列的检查工作。 “奇偶校验”是最简单的错误检测代码。
奇偶校验有奇校验、偶校验两种。
如果一组数据比特中第一个的数量为奇数,则奇偶校验比特被设置为1,使得总数的第一个的数量为偶数;
这里以奇偶校验为例。 奇偶校验与奇偶校验相似。
奇校验:如果一个数据比特组中的第一个数为偶数,则奇偶校验比特被设置为1,并且整个第一个数保持为奇数。
举例解释:
数据(1的个数)奇检0000 0011(2)2) 000000113358 www.Sina.com/0000001003358 www.Sina.com/0111111111 (7) 00000011113358 ww.000000
知道奇偶校验位后,不知道应该在哪里添加奇偶校验位,所以有必要审查主题。 在这个问题中,以逐字符进行操作为例
3的奇检查输出为10110011
a的奇检查输出为01100001
字符3的ASCII代码的十进制数为: 51,并转换为二进制数0011 0011
字符a的ASCII代码的十进制数为: 97,转换后的二进制数为0110 0001
ASCII代码使用七位二进制数字(剩下的一位二进制数字为0 )来表示所有大小写、数字0到9以及标点符号。
总之,这里的字符用与ACSII码对应的十进制变换为二进制进行奇偶校验,最高位的奇偶校验比特进行奇偶校验。
代码/*1.将输入的字符串转换为字符数组。 验证字符数组中的所有字符。 2 .逐字符检查a .获得其二进制串b。 将该二进制文件中1的个数c. 1的个数设为奇数个,将高位设为0; 的个数为偶数个,高位为1*/import java.util.*; public class main { publicstaticvoidmain (string [ ] args ) scannersc=newscanner ) system.in; while(sc.Hasnext () ) ({ String str=sc.next ); Jicheck(str.Tochararray ) ); } publicstaticvoidjicheck (char [ ] arrs ) { int[] result=new int[8]; //保存二进制序列for (inti=0; i arrs.length; I ) { int one=0x01; int count=0; //保留二进制序列中1的个数//得到该二进制序列int index=7; wile(index0) result[index]=((ARRS[I]one )==0)? 0 : 1; if(result[index]==1)计数; one=1; 索引- -; //偶数个1,高位1; 奇数个1,高位为0result[0]=(count%2==1)? 0 : 1; //输出for(intk=0; k 8; k ) {system.out.print(result[k]; } System.out.println (; }}在本地IDEA上运行:
牛客网在线OJ :