#include <stdio.h>
int* even_check(int* ,int );
int main(){
int input=0,input_ref=0,output=0;
int arr[]={3,10,11,12,15,21,23,60,70,71,91};
int* ptr=NULL;
int length=sizeof(arr)/sizeof(int);
ptr=even_check(arr,length);
for(int k=0;k<10;k++){
printf("arr[%d]=%d ",k,arr[k]);
}
return 0;
}
int* even_check(int* arr,int length)
{
for(int i=0;i<length-1;i++){
int count=0, input_ref=0;
input_ref=arr[i];
/*计算当前数据二进制形式有几个1*/
while((input_ref)!=0){
count++; //计算二进制共有几个1
input_ref=input_ref&(input_ref-1);//消除最低位的1
}
/*数据加入校验位,此处为偶校验*/
arr[i]=arr[i]<<1; //向左移一位
if((count%2)==0){ //如果二进制形式有偶数个1
arr[i]=arr[i]+0;
}
else{ //如果二进制形式有奇数个1
arr[i]=arr[i]+1;
}
}
return arr;}