一、
#include<stdio.h>
#include<stdlib.h>
int Numberof_oddbits_evenbits(unsigned int num)//无符号整型的形参
{
int arrOdd[16] = { 0 };
int arrEven[16] = { 0 };
int i = 0;
int flag = 1;
int m = 0;
for (i = 0; i < 16; i++)//找奇数位
{
int ret = 0;
if (num & flag)//该数和‘1’进行按位与运算,结果不为零则表示这位上的值是‘1’。
{
ret = 1;
}
else
{
ret = 0;
}
arrOdd[m] = ret;//把奇数位上的值放在数组Odd中
m++;
flag = flag << 2;
}
flag = 2; //偶数为从2开始
int j = 0;
for (i = 0; i < 16; i++)//找偶数位
{
int ret = 0;
if (num & flag)
{
ret = 1;
}
else
{
ret = 0;
}
arrEven[j] = ret; //把偶数位上的值放在数组Even中
j++;
flag = flag << 2;
}
printf("该数的奇数位上的值是:");
for (i = 0; i < 16; i++) //打印数组Odd
{
printf("%d ", arrOdd[i]);
}
printf("\n");
printf("该数的偶数位上的值是:");
for (i = 0; i < 16; i++)//打印数组Even
{
printf("%d ", arrEven[i]);
}
return 0;
}
int main()
{
printf("请输入一个整数:");
int num = 0;
scanf_s("%d", &num);
Numberof_oddbits_evenbits(num);
system("pause");
return 0;
}
二、
void showJO(int x)
{
int arr1[16] = { 0 };
int arr2[16] = { 0 };
int j = 0;
int k = 0;
int i = 0;
for (i = 0; i < 32; i+=2)
{
if (x & (1 << (31 - i)))
{
arr1[j] = 1;
}
j++;
if (x &(1 << (30 - i)))
{
arr2[k] = 1;
}
k++;
}
}
int main()
{
int x=41969;
showJO(x);
system("pause");
return 0;
}
void showbit(int x)
{
int i = 31;
for (; i >=0; i--)
{
if (x &(1 << i))
{
printf("1");
}
else
{
printf("0");
}
}
}
int main()
{
int x = 41969;
showbit(x);
system("pause");
return 0;
}