1计算一个字节里有多少个bit被置1,多少位被置换为0:
int chek_byte_1(char x) { int i,count_1=0; for(i=0;i<8;i++) { if(((x>>i)&1)==1) count_1++; } return count_1; } int chek_byte_0(char x) { int i,count_0=0; for(i=0;i<8;i++) { if(((x>>i)&1)==0) count_0++; } return count_0; }
*if( ( (x>>i) &1)==1) 这里我们需要判断优先级的时候最好是多加个括号,这样谁都看得懂了,其实&有2个意思,一个是取地址,一个是位运算,这里是取地址是比==低的,所以我们需要打上括号
void main() { char num=16; printf("%d has bit 1= %d,bit 0=%d \n",num,chek_byte_1(num),chek_byte_0(num)); }
2. 写一个函数,判断是小端字节序(LSB)还是大端字节序(MSB);
#include <stdio.h> int main() { int test = 1; if(*(char *)&test) printf("Little endian byte order!\n"); else printf("Big endian byte order!\n"); return 0; }