當前位置:首頁 » 編程語言 » c語言不支持2進制
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言不支持2進制

發布時間: 2022-06-19 16:49:30

A. 為什麼c語言里不能用格式符表示2進制

c語言中沒有規定用格式符表示2進制,沒有相應的定義。
一般想表示2進制都要自己編程進行2進制轉化。
在這兒我給你個我自己編的2進制轉換成10進制的程序吧,你參考下:

/****************************************************/
/* 二進制-》十進制 */
/* (輸入一個字元串,返回一個整數值) */
int binary_to_decimal(const char a[])
{
int i=0,k=0,sum=0;
while(a[i++]!='\0')
{i++;}
i--;

if(i>32) //當超過32位整數最大的范圍時,報錯
{
printf("超過32位整數的范圍");
return 0;
}
else if(i<32 || (i==32 && a[0]=='0')) //當字元串小於32,或者剛好32位且第1位為'0'。
for(int j=i;j>0;j--)
{
if(a[k++]=='1')
sum+=(int)pow(2,j-1);
}
else //當字元串剛好32且第1位為'1',可知這是一個負數。負數需要求補,即把所有'0'、'1'互換,然後加上1。最後的正數加個符號即可。
{
for(int j=i;j>0;j--)
{
if(a[k++]=='0') //'0'、'1'互換
sum+=(int)pow(2,j-1);
}
sum+=1; //結果加1
sum=0-sum; //加個負號
}
return sum;
}

B. c語言變數可以賦值為二進制數嗎

1 c語言中,變數不可以用二進制數來賦值

2 在c語言中,若要給變數賦整型值,則只可以用十進制數、八進制數和十六進制數來賦值

3 示例

intn;
n=12; //使用十進制數來賦值
n=012; //使用八進制數來賦值
n=0x12; //使用十六進制數來賦值

4 擴展

在Java中,變數是可以用二進制數來賦值的。一個示例如下

intn=0b111;
System.out.println(n);
//輸出的結果為:7

C. c語言沒有二進制對么

這叫什麼話?計算機都用二進制,C語言也不例外地要用二進製表示和處理數據,只是C語言不支持用二進制輸入和在屏幕上輸出……

D. C源程序中為什麼不能表示二進制數

數據在內存中以二進制補碼形式存放!之所以用二進制存放是因為計算機容易識別二進制數,只有0和1表示,編碼解碼速度塊,存取速度塊。

我們熟悉的10進制、8進制、16進制數,表示起來都不是很長,如十進制數20,表示成8進制是24,表示成16進制是14,而表示成二進數(最短的是八位)是00010100。可見,二進制數書寫起來比較困難,你想想,你想輸入一個數值是20的數,你是想輸20、24、14、00010100中的哪一個?顯然,如果不是特殊的要求,我想我們都不會選擇輸入00010100吧。

基於此,C語言沒有給你提供輸入二進制數的格式控制符,不像10進制、8進制、16進制一樣有%d、%o、%x這樣的輸入控制符。也就是說,你不能直接輸入輸出二進制數!

但是,C語言同樣可以表示二進制數,因為數據在內存中都是以二進制數存儲的,你想想,存都存的是二進制,還不能表示二進制數嗎?只是數據的存儲方式你看不到,但是假如你想看到一個數的二進制數,同樣可以簡單的實現。

請看程序,它就是把num這個數輸出成二進制形式:
#include<stdio.h>
#include <stdlib.h>

void main()
{
int num;
char str[33];
printf("請輸入整數num: ");
scanf("%d",&num);
itoa(num,str,2);
printf("%d的二進制形式是%s\n",num,str);

}

E. 為什麼C語言沒有直接支持二進制數

1 c語言中,變數不可以用二進制數來賦值 2 在c語言中,若要給變數賦整型值,則只可以用十進制數、八進制數和十六進制數來賦值 3 示例 int n;n = 12;//使用十進制數來賦值n = 012;//使用八進制數來賦值n = 0x12;//使用十六進制數來賦值4 擴展 在

F. 為什麼C語言的程序中不可以輸入二進制數呢

你不覺得輸入2進制數很麻煩嗎,沒有必要設計能輸入2進制,因為2進制可以很方便的轉換成16進制和8進制,然後輸入16進制或8進制數就可以了

G. c語言中不能表示數制的是什麼進制

理論上來說,所有數字均可以自成進制,包括生活中常用的10進制,12進制,16進制,以及計算機領域中常用的2進制,8進制,16進制等。
從數學角度上來說,7進制,13進制,100進制,6789進制...
任意的進制都是可行的,雖然並沒有什麼現實意義。
在C語言中,只支持8進制,10進制,16進制。除了這三種外,其它進制均是不支持的。

H. c源程序為什麼不能表示二進制,程序本身不就是二進制嗎

數據在內存中以二進制補碼形式存放!之所以用二進制存放是因為計算機容易識別二進制數,只有0和1表示,編碼解碼速度塊,存取速度塊。 我們熟悉的10進制、8進制、16進制數,表示起來都不是很長,如十進制數20,表示成8進制是24,表示成16進制是14,而表示成二進數(最短的是八位)是00010100。可見,二進制數書寫起來比較困難,你想想,你想輸入一個數值是20的數,你是想輸20、24、14、00010100中的哪一個?顯然,如果不是特殊的要求,我想我們都不會選擇輸入00010100吧。 基於此,C語言沒有給你提供輸入二進制數的格式控制符,不像10進制、8進制、16進制一樣有%d、%o、%x這樣的輸入控制符。也就是說,你不能直接輸入輸出二進制數! 但是,C語言同樣可以表示二進制數,因為數據在內存中都是以二進制數存儲的,你想想,存都存的是二進制,還不能表示二進制數嗎?只是數據的存儲方式你看不到,但是假如你想看到一個數的二進制數,同樣可以簡單的實現。 請看程序,它就是把num這個數輸出成二進制形式: #include<stdio.h> #include <stdlib.h> void main() { int num; char str[33]; printf("請輸入整數num: "); scanf("%d",&num); itoa(num,str,2); printf("%d的二進制形式是%s\n",num,str); }

I. C語言二進制怎麼表示

c++中負數存儲時,不是簡單的將符號位置為1,而是採用補碼的形式存儲的,負數最高位為符號位,也就是1,其餘全部取反,然後再加1。

假如操作系統是32位,-1的二進制存儲不是:1000
0000 0000 0001,而是:1111 1111 1111 1110+1即1111 1111 1111 1111。

(9)c語言不支持2進制擴展閱讀:

C語言面向過程,與C++、Java等面向對象編程語言有所不同。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、僅產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

C語言描述問題比匯編語言迅速、工作量小、可讀性好、易於調試、修改和移植,而代碼質量與匯編語言相當。

J. C語言中為什麼不能用二進製表示整常數

2進制。
普通的數是十進制,0x表示十六進制,0後面加數字表示八進制。