#include<iostream>
using namespace std;
#define BIG_LITTLE_SWAP_16(n) ((((unsigned short)(n) & 0xFF00) >> 8) | (((unsigned short)(n) & 0x00FF) << 8))
#define BIG_LITTLE_SWAP_32(n) ((((unsigned int)(n) & 0xFFFF0000) >> 16) | (((unsigned int)(n) & 0x0000FFFF) << 16))
#define GET_BIT(x, y) (((x) >> (y)) & 0x01)//获得x的第y位的值
#define SET_BIT(x, y) ((x) |= (1 << (y)))//将x的第y位设置为1
#define CLR_BIT(x, y) ((x) &= ~(1 << (y)))//将x的第y位设置为0
void printofbyte(void * ptr,int len)
{
unsigned char *p=(unsigned char *)ptr;
printf("0x");
for(int i=len-1;i>=0;i--)
{
printf("%u",p[i]/16);
printf("%u",p[i]%16);
}
printf("\n");
}
bool iseven(int num)
{
if(num&(num-1))
return false;
else
return true;
}
int main()
{
unsigned short n1=1;
unsigned int n2=1;
printf("n1转换前 16进制:\n");
printofbyte(&n1,sizeof(n1));
n1=BIG_LITTLE_SWAP_16(n1);
printf("n1转换后 16进制:\n");
printofbyte(&n1,sizeof(n1));
printf("n2转换前 32进制:\n");
printofbyte(&n2,sizeof(n2));
n2=BIG_LITTLE_SWAP_32(n2);
printf("n2转换后 32进制:\n");
printofbyte(&n2,sizeof(n2));
printf("\n-----------------------\n");
int x,y;
x=8;y=3;
printf("GET_BIT(%d,%d):%d\n",x,y,GET_BIT(x,y));
x=8;y=1;
printf("SET_BIT(%d,%d):%d\n",x,y,SET_BIT(x,y));
x=8;y=3;
printf("CLR_BIT(%d,%d):%d\n",x,y,CLR_BIT(x,y));
printf("\n-----------------------\n");
int m1=2;
int m2=73;
int m3=0;
if(iseven(m1))
{
printf("%d是偶数\n",m1);
}
else
{
printf("%d是奇数\n",m1);
}
if(iseven(m2))
{
printf("%d是偶数\n",m2);
}
else
{
printf("%d是奇数\n",m2);
}
if(iseven(m3))
{
printf("%d是偶数\n",m3);
}
else
{
printf("%d是奇数\n",m3);
}
getchar();
return 0;
}