為什麼在c語言中會引入三種進位制數!八進位制,十進位制,十六進位制!難道一種進位制數不夠用?還是為什麼?哪位

2021-04-08 23:57:56 字數 5479 閱讀 2357

1樓:夜禮服假面

1) 二進位制數中只有兩個字元0和1,表示具有兩個不同穩定狀態的元器件。例如,電路中有,無電流,有電流用1表示,無電流用0表示。類似的還比如電路中電壓的高,低,電晶體的導通和截止等。

2) 二進位制數運算簡單,大大簡化了計算中運算部件的結構。

由於二進位制資料的基r較小,所以二進位制資料的書寫和閱讀不方便,為此,在小型機中引入了八進位制。

八進位制的基r=8=2^3,有數碼0、1、2、3、4、5、6、7,並且每個數碼正好對應三位二進位制數,所以八進位制能很好地反映二進位制。八進位制用下標8或

資料後面加o表示 例如:二進位制資料 ( 11 101 010 . 010 110 100 )2 對應 八進位制資料 ( 3 5 2 . 2 6 4

)8或352.264o.

人們通常使用的是十進位制。它的特點有兩個:有0,1,2….9十個基本數字組成,十進位制數運算是按「逢十進一」的規則進行的.

在計算機中,除了十進位制數外,經常使用的數制還有二進位制數和十六進位制數.在運算中它們分別遵循的是逢二進一和逢十六進一的法則.

由於二進位制數在使用中位數太長,不容易記憶,所以又提出了十六進位制數

十六進位制數有兩個基本特點:它由十六個字元0~9以及a,b,c,d,e,f組成(它們分別表示十進位制數10~15),十六進位制數運算規律是逢十六進一,即基r=16=2^4,通常在表示時用尾部標誌h或下標16以示區別。

例如:十六進位制數4ac8可寫成(4ac8)16,或寫成4ac8h。

2樓:匿名使用者

十進位制計數法是相對二進位制計數法而言的,是我們日常使用最多的計數方法。

計算機內部使用二進位制表示數,二進位制與十進位制的轉換是比較複雜的。

由於二進位制資料的基r較小,所以二進位制資料的書寫和閱讀不方便,為此,在小型機中引入了八進位制。八進位制適用於12位和36位計算機系統(或者其他位數為3的倍數的計算機系統)。

由於二進位制數在使用中位數太長,不容易記憶,所以又提出了十六進位制數。比較短容易記憶且適於大部分位數為二的冪(8位,16位,32位與64位計算機系統)的計算機系統

3樓:i桂金

我們機器只識別0和1.眼中只有2進位制。

引入其他進位制,我覺得這些進位制很大原因都是為了方便你們地球人閱讀操作。

好比如表示一個32位地址如果用32個0和1多麻煩。

1111 1111 1111 1111 1111 1111 11111 1111

用0xffffffff就好看多了。

4樓:小兆

其實,這個是不用原因的,存在即合理。

不同的進位制有不同的優勢,在不同的場合使用其中的一種便於說明問題。

5樓:藍竹先生

十進位制是人的習慣,而八進位制和十六進位制是符合電腦的系統的物理結構,不過八進位制已經很少應用,幾乎是十六進位制

在計算機中為什麼引入八進位制和十六進位制?

6樓:匿名使用者

二進位制數書寫冗長、易錯、難記,而十進位制數與二進位制數之間的轉換過程複雜,所以一般用十六進位制數或八進位制數作為二進位制數的縮寫。

進位計數制

按進位的原則進行的計數方法稱為進位計數制。

在採用進位計數的數字系統中,如果用r個基本符號(例如:0,1,2, ,r-1)表示數值,則稱其為基r數制(radix-r number system),r成為該數制的基(radix)。如日常生活中常用的十進位制數,就是r=10,即基本符號為0,1,2, ,9。

如取r=2,即基本符號為0,1,則為二進位制數。

對於不同的數制,它們的共同特點是:

1)每一種數制都有固定的符號集:如十進位制數制,其符號有十個:0,1,2, ,9,二進位制數制,其符號有兩個:0和1。

2)其次都是用位置表示法:即處於不同位置的數符所代表的值不同,與他所在位置的權值有關。

例如:十進位制可表示為:

5555.555 = 5 103 + 5 102 + 5 101 + 5 100 + 5 10-1 + 5 10-2 + 5 10-3

可以看出,各種進位計數制中的權的值恰好是基數的某次冪。因此,對任何一種進位計數製表示的數都可以寫出按其權的多項式之和,任意一個r進位制數n可表示為:

式中的di為該數制採用的基本數符,ri是位權(權),r是基數,表示不同的進位制數;m為整數部分的位數,k為小數部分的位數。

"位權"和"基數"是進位計數制中的兩個要素。

在十進位計數制中,是根據"逢十進一"的原則進行計數的。一般地,在基數為r的進位計數制中,是根據"逢r進一"或"逢基進一"的原則進行計數的。

在微機中,常用的是二進位制、八進位制和十六進位制。其中,二進位制用得最為廣泛。

表2所示的是計算機中常用的幾種進位數制。

7樓:匿名使用者

二進位制數是計算機產生的理論基礎,不過當資料增大時,二進位制資料只有數字0、1,容易產生錯誤碼,為了提高其可讀性,引入了8、16進位制

8樓:匿名使用者

記錄資料和指令

1.2.4.8.16.32.64.128.256.512.1024

沒有其他位數

c語言程式設計,輸入十進位制數輸出十六進位制和八進位制

9樓:園林植物手冊

可以通過下面的公式解決

#include

const int maxn = 128;

const int index8 = 8;

const int index16 =16;

int main()

while(m)

int i;

for(i = cot8 - 1; i >= 0; i--)printf("%d", array8[i]);

puts("");

for(i = cot16 - 1; i >= 0; i--)擴充套件資料:

十進位制轉十六進位制的具體方法:對於整數部分,用被除數反覆除以16,除第一次外,每次除以16均取前一次商的整數部分作被除數並依次記下每次的餘數。另外,所得到的商的最後一位餘數是所求二進位制數的最高位。

對於小數部分,採用連續乘以基數16,並依次取出的整數部分,直至結果的小數部分為0為止。故該法稱「乘基取整法」。

10進位制數轉換成十六進位制數,這是一個連續除以16的過程:把要轉換的數,除以16,得到商和餘數,將商繼續除以16,直到商為0。最後將所有餘數倒序排列,得到數就是轉換結果。

10樓:匿名使用者

可以格式化輸出。

#include

int main()

11樓:匿名使用者

#include

void showbit(int n)

printf("%d",n%2);

}void showoct(int n)

printf("%d",n%8);

}void showhex(int n)

printf("%d",n%16);

}int main()

12樓:著述的鴨子非了

#include

main()

while(n!=0);

for(i--;i>=0;i--)

putchar(s[i]);

} //十進位制轉八進位制 十六進位制方法類似#include

void main()

計算機採用二進位制數,那為什麼還要引入八進位制數和十六進位制數?

13樓:匿名使用者

二進位制數是計算機產生的理論基礎,不過當資料增大時,二進位制資料只有數字0、1,容易產生錯誤碼,為了提高其可讀性,引入了8、16進位制。

14樓:匿名使用者

用於平行計算啊,記憶體和顯示卡的速度沒有cpu快,要跟上只有128位來計算了,就用16位進位制。

15樓:匿名使用者

計算機只採用二進位制數,八進位制數和十六進位制數是為了人們讀取方便,換句話說,八進位制數和十六進位制數是給人看的!

c語言中不能用來表示整常數的進位制是什麼進位制?(十進位制,二進位制,八進位制還是十六進位制?)麻煩詳細說明!謝了!

16樓:匿名使用者

c語言中不能用來表示整常數的進位制是二進位制

二進位制是不行的

在c語言中,就是這麼規定的,沒有什麼太深究的原因整型常量又稱整型數,它有三種不同的表示形式:十進位制,八進位制,十六進位制十進位制直接用整數表示

八進位制可以在常熟前加0(零)例如027

十六進位制在常數前加0x(零 乘號) 例如 0x27

17樓:匿名使用者

2進位制。

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

18樓:匿名使用者

2進位制,至於為什麼我也不知道,規定把。。。

或者可以認為2進位制是機器級別的,程式設計是針對人的,編譯器的作用是把人類認知的程式編譯成2程序機器級別的資料,假如有2進位制表示式,這樣就矛盾了。。。。。

二進位制、八進位制、十進位制、十六進位制,在c語言中用在**

19樓:匿名使用者

二進位制是計算機在實際計算中使用的計數方式,儲存和運算都是二進位制的

八、十、十六進位制是在程式設計時,不方便使用二進位制(位數多,凌亂,不直觀),所以用這些進位制來寫到程式中,計算機在編譯時會將它們轉換成二進位制資料來用。所以這些進位制是方便程式設計者寫程式的。

20樓:匿名使用者

c語言源程式中可以使用的進位制數有八進位制、十進位制和十六進位制,表示規則分別是:

int a,b,c;

a=10;    /*十進位制賦值*/

b=010;   /*八進位制賦值*/

c=0x10;  /*十六進位制賦值*/

printf("%d,%o,%x",a,b,c);   /*  %d表示以十進位制整數輸出,%o表示以八進位制整數輸出,%x或%x表示以十六進位制整數輸出  */

printf("%d,%d,%d",a,b,c);   /*  把所有的以十進位制輸出也是可以,當然也可以換成其他進位制 */

注意:在c語言中,八進位制和十六進位制只能表示正整型。

c語言源程式編譯連線後所生成的.exe可執行程式屬於二進位制,但在源程式中無法用二進位制表示。

c語言位運算中真正計算時使用的就是二進位制。

如:unsigned char ch=4;

ch=ch>>1;

printf("%d",ch);

輸出值為8;

c語言中的二進位制,八進位制,十進位制,十六進位制是什麼,還有,陣列,

21樓:讓心去飛

二進位制就是逢二進一,二進位制裡只有兩個數字就是0和1.比如我們平時說的2,記做10,3記做11,4記做100,後面也是同樣的道理,我們平時用的是十進位制

22樓:深藍無墨

你這怎麼回答,就是一種計數方式而已

二進位制轉換十進位制,八進位制,十六進位制

在數制中,還有一個規則,這就是,n進位制必須是逢n進一。對於多位數,處在某一位上的 l 所表示的數值的大小,稱為該位的位權。例如十進位制第2位的位權為10,第3位的位權為100 而二進位制第2位的位權為2,第3位的位權為4,對於 n進位制數,整數部分第 i位的位權為ni 1,而小數部分第j位的位權為...

C語言八進位制十六進位制真值問題

關於八進位制和十六進位制的正負性,有如下幾種情況 1.如果直接使用,都認為是正值,比如 printf d 2 0x8008 輸出 65552 2.如果將其賦值給有符號變數,則 化為二進位制後 最高位為1表示負數,為0表示正。比如 short int y 0x8008 printf d y 輸出 32...

十六進位制數abcdeh轉換為十進位制數是

e 16 0 14 d 16 1 208 c 16 2 3072 b 16 3 45056 a 16 4 655360.以上相加結果703710 十六進位制數abcdeh轉換為十進位制數是為什麼是703725?h表示是十六進位制數字,abcde從左到右表示10 14。abcde轉換為十進位制數應該是...