天天看點

c語言關于二進制的輸出

c語言中的二進制輸出是沒有占位符的,不像八進制:%o; 和十六進制:x%;

c中二進制的輸出

1 //右移31位,從最高為開始和1做&運算,得到每一位的二進制數值
 2 void printbinry(int num)
 3 {
 4     int count = (sizeof(num)<<3)-1;//值為31
 5     while (count>=0) {
 6         int bitnum = num>>count; //除去符号位,從最高位開始得到每一位
 7         int byte = bitnum & 1; //和1進行與運算得到每一位的二進制數
 8         printf("%d",byte);
 9         
10         if (count%4==0) {//每隔四位列印空格
11             printf(" ");
12         }
13         
14         count--;
15     }
16     printf("\n");
17     
18 }      

上邊這種輸出是不會改變符号的,即正負号不會改變,且代碼簡潔;

還有一種是用c語言自帶的itoa函數,在頭檔案<stdlib.h>中

itoa(int value, char *str, int radix); 參數分别表示:

value:要轉換的數字;

str:是一個字元串,存儲轉換後的進制;

radix:要轉換的進制

1 #include <stdlib.h>
 2 #include <stdio.h>
 3 int main()
 4 {
 5     
 6     int a = 10;
 7     char str[100];
 8     itoa(a,str,2);
 9     
10     printf("%s\n", str);
11     
12     return 0;
13 }      

但是這種方式在xcode編譯器環境下報一個連結錯誤:clang: error: linker command failed with exit code 1 (use -v to see invocation)

還不知道解決辦法,求高人指點;

繼續閱讀