求数字特征值(C语言)

对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。对于一个整数,从个位开始对每一位数字编号,个位是1号,十位是2号,以此类推。这个整数在第n位上的数字记作x,如果x和n的奇偶性相同,则记下一个1,否则记下一个0。按照整数的顺序把对应位的表示奇偶性的0和1都记录下来,就形成了一个二进制数字。比如,对于342315,这个二进制数字就是001101。

代码:

#include <stdio.h> 
#include <math.h>

int main()
{
	int n,level=1,byte=1,sum=0,b;
	scanf("%d",&n);
	if(n>=0 && n<=100000){
		b=n%10;
		if(b%2)
			sum=1;
		while(n/10){
			n/=10;
			b=n%10;
			level++;
			if(b%2==level%2){
				byte=pow(2,level-1);
				sum+=byte;
			}
		}
		printf("%d\n",sum);
	}
	return 0;
}