/* Include lib */
#include <stdio.h>
#include <assert.h>
/* Define */
struct num_info {
int cnt_1;
int cnt_0;
unsigned int new_even_num;
};
/* API get all even bits of input 32bits */
void get_no_even_bit(unsigned int num, struct num_info *num_info)
{
int i;
int cnt_0 = 0, cnt_1 = 0, new_even_num = 0, b;
for (i = 0; i < (sizeof(num) * 8); i++) {
if ((i % 2) == 0) {
b = (num >> i) & 0x1;
if (b)
cnt_1++;
else
cnt_0++;
new_even_num |= b << (cnt_1 + cnt_0 - 1);
}
}
/* Assgin result */
num_info->cnt_1 = cnt_1;
num_info->cnt_0 = cnt_0;
num_info->new_even_num = new_even_num;
}
/* Main interact with user */
int main(void)
{
struct num_info num_info;
int sel;
unsigned int num;
while(1) {
printf("\n\nSelection:\n");
printf("0 : Input num and get even bits info\n");
printf("1 : Exit\n");
printf("Select: ");
scanf("%d", &sel);
switch (sel) {
case 0:
printf("Input value: ");
scanf("%x", &num);
get_no_even_bit(num, &num_info);
printf("No_bit0 %d, No_bit1 %d, New_even_num 0x%x\n",
num_info.cnt_0, num_info.cnt_1, num_info.new_even_num);
break;
case 1:
return 0;
break;
default:
printf("WARN: Option not available\n");
break;
}
}
return -1;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: