二、二進位制、八進位制、十六進製制整數的輸出
整數是我們生活中常用的資料型別,也是程式設計中常用的一種資料,c語言用int關鍵字來定義整數變數(int 是 integer 的簡寫)。
在定義變數的時候,可以加signed、unsigned、short和long四種修飾符。
signed:有符號的,可以表示正數和負數。
unsigned:無符號的,只能表示正數,例如陣列的下標、人的身高等。
short:短的,現在主流的64位作業系統下,整數占用記憶體4個位元組,使用 4
個位元組儲存較小的整數綽綽有餘,會空閒出兩個位元組來,這些位元組就白白浪費掉了。在c語言被發明的早期,或者在微控制器和嵌入式系統中,記憶體都是非常稀缺的資源,所有的程式都在盡可能節省記憶體。
long:長的,更長的整數。
乙個數字預設就是十進位制的,表示乙個十進位制數字不需要任何特殊的格式。但是,表示乙個二進位制、八進位制或者十六進製制數字就不一樣了,為了和十進位制數字區分開來,必須採用某種特殊的寫法,具體來說,就是在數字前面加上特定的字元,也就是加字首。
二進位制由 0 和 1 兩個數字組成,使用時必須以0b或0b(不區分大小寫)開頭。
以下是合法的二進位制:
int a =
0b101;
// 換算成十進位制為 5
int b =
-0b110010;
// 換算成十進位制為 -50
int c =
0b100001;
// 換算成十進位制為 33
以下是非法的二進位制:
int m =
101010
;// 無字首 0b,相當於十進位制
int n =
0b410;
// 4不是有效的二進位制數字
請注意,標準的c語言並不支援上面的二進位制寫法,只是有些編譯器自己進行了擴充套件,才支援二進位制數字。換句話說,並不是所有的編譯器都支援二進位制數字,只有一部分編譯器支援,並且跟編譯器的版本有關係。
八進位制由 0~7 八個數字組成,使用時必須以0開頭(注意是數字 0,不是字母 o)。
以下是合法的八進位制數:
int a =
015;
// 換算成十進位制為 13
int b =
-0101
;// 換算成十進位制為 -65
int c =
0177777
;// 換算成十進位制為 65535
以下是非法的八進位制:
int m =
256;
// 無字首 0,相當於十進位制
int n =
03a2;
// a不是有效的八進位制數字
十六進製制由數字 0~9、字母 a~f 或a~f(不區分大小寫)組成,使用時必須以0x或0x(不區分大小寫)開頭。
以下是合法的十六進製制:
int a =
0x2a
;// 換算成十進位制為 42
int b =
-0xa0
;// 換算成十進位制為 -160
int c =
0xffff
;// 換算成十進位制為 65535
以下是非法的十六進製制:
int m =
5a;// 沒有字首 0x,是乙個無效數字
int n =
0x3h;
// h不是有效的十六進製制數字
在現實生活和工作中,我們在寫十進位制數的時候,為了對齊或其它原因,在數值前面加0是無關緊要的,但是,在c語言中,不要在十進位制數前加0,會被計算機誤認為是八進位制數。下表是各種進製整數的輸出格式。
細心的讀者可能會發現,上表中沒有二進位制的輸出格式,雖然部分編譯器支援二進位制數字的書寫,但是卻不能使用printf函式輸出二進位制數。您可以編寫函式把其它進製數字轉換成二進位制數字,並儲存在字串中,然後在printf 函式中使用%s輸出。
示例:
/*
* 程式名:book.c,此程式用於演示二進位制、八進位制、十六進製制整數的輸出。
*/#include
intmain()
二進位制 八進位制 十六進製制
生活中我們普遍用十進位制,逢十進一。同理,二進位制八進位制和十六進製制是逢二進 一 逢八進 一 逢十六進一。十進位制是便於人理解而二進位制是便於電腦理解。二進位制在計算機內部使用是再自然不過的。但在人機交流上,二進位制有致命的弱點 數字的書寫特別冗長。二進位制和八進位制 二進位制和十六進製制之間的換...
二進位制八進位制 十六進製制
進製也就是進製位,對於接觸過電腦的人來說應該都不陌生,我們常用的進製包括 二進位制 八進位制 十進位制與十六進製制,它們之間區別在於數運算時是逢幾進一位。比如二進位制是逢2進一位,十進位制也就是我們常用的0 9是逢10進一位。具體的用法小編今天不著重解釋,主要針對他們之間的轉換加以討論 今天只講整數...
二進位制 八進位制 十六進製制
二進位制 二進位制是計算技術中廣泛採用的一種數制。二進位制資料是用0和1兩個數碼來表示的數。它的基數為2,進製規則是 逢二進一 借位規則是 借一當二 由18世紀德國數理哲學大師萊布尼茲發現。當前的計算機系統使用的基本上是二進位制系統,資料在計算機中主要是以補碼的形式儲存的。計算機中的二進位制則是乙個...