使用位运算显示二进制数
最近学习《C Primer Plus》位操作部分,结合书上的编程实例来巩固这部分知识点。
1 //使用位运算显示二进制数 2 #include<stdio.h> 3 char *itobs( int, char*); //integer to binary string 4 void show_bstr( const char*); 5 main() 6 { 7 char bin_str[8 * sizeof(int) +1]; 8 int number; 9 while(scanf("%d", &number)==1) 10 { 11 itobs( number, bin_str); 12 printf("%d is ", number); 13 show_bstr( bin_str); 14 putchar('\n'); 15 } 16 } 17 char *itobs( int n, char *ps) 18 { 19 int i; 20 static int size = 8 * sizeof(int); 21 for( i=size-1; i>=0; i--, n>>=1) 22 ps[i]=(1&n)+'0'; //01&n就是n的最后一位的值(1&n也行),该值为0或1。字符数组需要字符'0'或'1',加上'0'的ASCII编码可以完成转换 23 ps[size]='\0'; 24 return ps; 25 } 26 //四位一组显示二进制字符串 27 void show_bstr(const char *str) 28 { 29 int i=0; 30 while(str[i]) 31 { 32 putchar(str[i]); 33 if(++i%4==0 && str[i]) 34 putchar(' '); 35 } 36 }