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)
還不知道解決辦法,求高人指點;