题目来源
题目描述
输入一个字符串,然后对每个字符进行奇校验,最后输出校验后的二进制数(如’3’,输出:10110011)。
题目解析
本题里面将数字和字母统一看成是char类型的,所以数字3实际存储时为ASCII码中的‘3’,其十进制表示是51,转化为二进制表示就是0110011,取最高位为奇校验位,校验位为1,所以校验后的二进制数为10110011,字母同理。故本题只需将输入的字符减去‘\0’得到字符的十进制表示,再将其转化为七位二进制数加上一位校验位输出即可。
题目解答
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String str=sc.nextLine();
jiQiaoYan(str.toCharArray());
}
}
public static void jiQiaoYan(char[] s){
int[] result=new int[8];
for(int i=0;i<s.length;i++){
int n=0x01;
int j=7;
int sum=0;
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;
System.out.println();
}
}
}