69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <math.h>
unsigned int get_odd_bit(unsigned int n, int bit_len);
int main()
{
#if 0
unsigned int x,n;
int i,y;
char s[50];
scanf("%u",&x);
i=0;
while(x>0)
{
s[i++] = x%2 +'0';
x=x/2;
}
s[i]='\0';
puts(s);
y = i-1;
for(i=y;i>=0;i--) if((i+1)%2==0) s[i]='0';
puts(s);
for(i=y,n=0;i>=0;i--) n+=pow(2.0,y-i)*(s[i]-'0');
printf("%u\n",n);
#else
unsigned int x;
scanf("%u", &x);
x = get_odd_bit(x, 32);
printf("%u\n", x);
#endif
return 0;
}
unsigned int get_odd_bit(unsigned int n, int bit_len)
{
unsigned int s = 0;
int i;
for (i = 0; i < bit_len; i++) {
if (i % 2)
s += ((n >> i) & 1u) ? (1u << i) : 0;
}
return s;
}