Linux C基礎02——進制轉換和c語言簡單介紹

一,進制轉換

 

其他進制轉換到二進制:

10->2:除二取餘 逆取法!小數部分乘積(2)取整,順寫法!

16->2: 一位轉四位 0x放在首位,表示16進制,0x2F;

8->2: 一位變三位! 0放在首位,表示16進制 ,03;

 

二進制轉換到其他進制:

2->8:三位合一法,從右到左,高位 不夠三位則補零!

2->16:類上;

2->10:位權展開求和法;

八進制,十六進制轉化爲十進制:位權展開求和法。整體順序、小數點不變,個位乘8的0次方+十位乘8的1次方...=十進制得數,即可。小數部分從左到右乘8的負一次方開始,以此類推。

十進制轉化爲十六進制,八進制:

整體順序、小數點不變,整數部分除8取餘數,倒取法;小數部分乘8,取整數,順取法。

 

二,簡單c語法

 

【1】c庫

在實際的程序設計中,經常需要使用到一些基本功能,例如輸入輸出,各種常用計算等。但是這些功能對於一般程序員來說難以自行開發,卻要經常用到,因此編譯系統通常將這些功能預先編制好,以程序庫的形式提供給程序員使用

標準C庫裏提供了很多的函數,只要在程序裏包含了C庫中對應的頭文件(函數聲明),就可以使用這些庫函數了。

 

【2】gcc編譯器

gcc(GNU CCompiler)是GNU推出的功能強大,性能優越的多平臺編譯器,gcc編譯器能將C,C++語言源程序編譯連接成可執行文件

gcc編譯的四個過程:

 

1--- 預處理:主要進行宏替換以及頭文件的包含展開

 

gcc -E HelloWorld.c -o HelloWorld.i

 

2--- 編譯:編譯生成彙編文件,會檢查語法是否有錯誤

 

gcc -S HelloWorld.i -o HelloWorld.s

 

3--- 彙編:將彙編文件編譯生成目標文件(二進制文件)

gcc -c HelloWorld.s -o HelloWorld.o

 

4--- 鏈接:鏈接庫函數,生成可執行文件

 

gcc HelloWorld.o -o HelloWorld

-o 指定生成的可執行文件名字

 

【3】計算機數據表示

送入計算機的數字,字母,符號等信息必須轉換成0、1組合的數據形式才能被計算機接收、存儲並進行運算。

能夠進行算術運算得到明確數值概念的信息成爲計算機數值數據,其餘的信息成爲非數值數據

 

1---數值數據

 

二進制 101111

十進制 47

八進制 057

十六進制 0x2f

 

 

2---非數值數據

 

計算機中數據的概念是廣義的,機內除有前面提到的數值數據之外,還有文字、符號、圖像、語言和邏輯信息等等,因爲它們也都是以0、1形式存在,所以成爲非數值數據

字符數據主要指數字、字母、通用符號、控制符號等等,在機器內都被變換成計算機能夠識別的二進制編碼形式

國際上被普遍採用的一種編碼是美國國家信息交換標準代碼,簡稱爲ASCII

 

 

第一部分由 00H 到 1FH 共 32 個,一般用來通訊或作爲控制之用,有些字符可顯示於屏幕,有些則無法顯示在屏幕上,但能看到其效果(例如換行字符、歸位字符)。

第二部分是由 20H 到 7FH 共 96 個,這 96 個字符是用來表示阿拉伯數字、英文字母大小寫和底線、括號等符號,都可以顯示在屏幕上。

第三部分由 80H 到 0FFH 共 128 個字符,一般稱爲『擴充字符』,這 128 個擴充字符是由 IBM 制定的,並非標準的 ASCII 碼。這些字符是用來表示框線、音標和其它歐洲非英語系的字母。

 

記住: '\0' => 0

'\n' => 10

' ' => 32

'0' => 48

'A' => 65

'a' => 97

 

【4】詞法符號

 

1---關鍵字

關鍵字是由系統預定義的詞法符號,有特定的含義,不允許用戶重新定義

auto break case char const

continue default do double else

enum extern float for goto

if int long register return

short signed sizeof static struct

switch typedef union unsighed void

volatile while

 

2---標識符

標識符是由程序員按照命名規則自行定義的詞法符號,用於定義宏名、變量名、函數名和自定義類型名等

C語言的命名規則如下:

1) 標識符由一個或多個字母、數字或下劃線組成

2)標識符的第一個字符必須是字母或下劃線

3)標識符不能與任何關鍵字相同

大小寫敏感; ab Ab aB AB

 

 

3---標點符號

C語言中的標點符號有逗號、分號、冒號、花括號、圓括

號。標點符號的作用與分隔符相似,但用法非常嚴格,有

着明確的語法規定。

有些標點符號出現在表達式中時,當

作運算符使用

 

 

4---分隔符

 

分隔符是用來分隔其他的詞法符號

 

主要包括:

空格符、換行符號、註釋、製表符

 

 

5---運算符

表示運算的詞法符號

主要

包括:

算術運算符、 邏輯運算符、關係運算符、位運算符、

賦值運算符、 遞增遞減運算符、地址運算符、

逗號運算符、sizeof運算符…

 

 

【5】基本數據類型

 

1---邏輯類型。只有兩個量true和false,表示邏輯真值和邏輯假值。

 

2---整數類型。C支持四種整數類型:char, short, int和long,整數類型用於處理整數。

1)char類型,又稱爲字符類型,主要是用來存儲字符型數據,但是因爲ascii碼錶,字符與數字是對應關係

在內存空間佔一個字節,即8個二進制爲

 

分爲有符號char類型和無符號char類型

 

signed char(可以存儲負數):二進制形式的最高位爲符號位,1表示負數,0表示正數

 

0000 0000 =》 0

1111 1111 =》 -127

0111 1111 =》 127

1000 0000 =》 -128

表示範圍:-128 - +127

 

 

unsigned char(只可以存儲正數)

 

0000 0000 =》 0

1111 1111 =》 255

表示範圍:0-255

 

 

=============================================================================

數據的存儲:計算機存儲的是補碼

比如說5:正數源碼反碼補碼都一樣

0000 0101 源碼

0000 0101 反碼

0000 0101 補碼(計算機存儲)

比如說-5:負數的補碼是反碼+1,反碼是源碼除符號位外其他位全部取反

1000 0101 源碼

1111 1010 反碼

1111 1011 補碼(計算機存儲)

 

=============================================================================

 

2)short類型,佔據2個字節的空間,即16個二進制位

對應的printf中的格式是 %hd;

拓展:unsigned int 以及unsigned long 等在printf的格式控制爲: %u;

 

unsigned short

0000 0000 0000 0000 ==> 0

1111 1111 1111 1111 ==> 65535

 

表示範圍:0 - 65535

 

signed short

1111 1111 1111 1111 ==> -32767

0000 0000 0000 0000 ==> 0

0111 1111 1111 1111 ==> +32767

1000 0000 0000 0000 ==> -32768

表示範圍:-32768 - +32767

 

 

3)int類型,佔據4個字節的空間,即32個二進制位

unsigned int

0000 0000 0000 0000 0000 0000 0000 0000 => 0

1111 1111 1111 1111 1111 1111 1111 1111 => 4294967295

表示範圍:0 - 4294967295

 

signed int

0000 0000 0000 0000 0000 0000 0000 0000 => 0

1111 1111 1111 1111 1111 1111 1111 1111 => -2147483647

0111 1111 1111 1111 1111 1111 1111 1111 => +2147483647

1000 0000 0000 0000 0000 0000 0000 0000 => -2147483648

表示範圍:-2147483648 - +2147483647

 

4)long類型,32位佔據4個字節

 

5)long long類型,佔據8個字節

 

 

3---浮點類型。C支持兩種浮點類型:float和double,浮點類型用於處理包含小數部分的數值。

float稱爲單精度類型,佔據4個字節,一般能夠精確到小數點後面6位

double稱爲雙精度類型,佔據8個字節,一般能夠精確到小數點後面15位

 

4---void類型。該類型也叫缺省型,用於描述值爲空集, 主要用於說明不返回值的函數或指向任一類型的指針等

 

 

【6】常量

常量是指在程序運行期間其數值不發生變化的數據。

 

1---整型常量

整型常量通常簡稱爲整數。

C語言的整數可以是十進制數、八進制數和十六進制數

 

2---浮點常量

浮點常量又稱爲實數,一般含有小數部分。

1)一般形式

3.14 5.67

2)指數形式

指數形式的實數一般是由尾數部分、字母e或E和指數部分組成。

1.176*10^10 ==> 1.176e+10

-5.7473*10^-8 ==> -5.7473e-8

 

3---字符常量

所謂字符常量是指一個單一字符, 其表示形式是由兩個單引號包括的一個字符

例如,

‘A’, ‘a’, ‘Q’, ‘0’, ‘9’, ‘+’, ‘:’, ‘?’, ‘$’ 都是字符常量

在C語言中, 字符常量具有數值。字符常量的值就是該字符的ASCII碼值。

因此,可以這樣說字符常量實際上是一字節的正整數

 

4---字符串常量

所謂字符串常量是指用雙引號括起來的一串字符來表示的數據。

下面給出幾個字符串常量的例子:

"Hello!", "StudentS", "9", “LINUX", "李四"

“北京海淀成府路***號", "姓名:", “****@163.com"

 

5---標識常量

所謂標識常量是指用標識符代替常量使用的一種常量, 其名稱通常是一個標識符

標識常量也叫符號常量,爲了不與一般變量的名稱相混淆,標識常量的名稱一般使用大寫英文字母的標識符。標識常量在使用之前必須預先定義

標識常量的一般說明形式爲:

#define <標識常量名稱> <常量>

 

標識常量僅僅是簡單的替換,不要做任何運算

練習:一個水分子的質量約爲3.0*10-23g,1夸脫水大約有950g,編寫一個程序,要求輸入水的夸脫數,然後顯示這麼多水中包含說少水分子。

 

 

【7】變量

1---變量的概念

 

用來記錄數據,在程序運行期間,變量的值可以更改

C語言的變量在程序中用變量名錶示。變量名由用戶根據其用途任意命名,變量名命名遵從標識符的起名規則(只能由字母\數字\下劃線組成且頭一個字母只能是字母或下劃線. 變量不能是C的特殊字符)。

 

在程序運行時,變量佔據一定大小的存儲空間,其大小由其數據類型來決定的,作爲某變量的內存空間的首地址,稱爲變量的地址。

 

 

2---變量的說明形式

變量說明的一般形式是:

<存儲類型> <數據類型 > <變量名> ;

<存儲類型>可以是關鍵詞auto、register、static和extern之一

<數據類型>可以是前面講的基本數據類型,也可以是後面要講解的自定義的數據類型.

<變量名>是一個合法的標識符,其前面的32字符有效

注意:在上面變量說明的式子裏,<變量名>之後有一個分號“;”意味着它是一個語句,該語句我們通常稱爲變量的說明語句

 

變量的初始化是指變量在被說明的同時賦給一個初值

 

 

3---變量的存儲類型

1)auto

用auto存儲類型說明的變量都是局部於某個程序範圍內的,只能在某個程序範圍內使用,通常在函數體內或函數中的複合語句裏。

C語言中,在函數體的某程序段內說明auto存儲類型的變量時可以省略關鍵字auto。

 

2)register

 

register稱爲寄存器型,使用register關鍵詞說明的變量主要目的是想將所說明的變量放入CPU的寄存器存儲空間中,這樣可以加快程序的運行速度。

如申請不到就使用一般內存,同auto ;

 

3)extern:

適用情況:引用外部文件的全局變量;

全局變量 作用域:整個源程序;

注意(名字必須相同):在本文件函數中,引用外部文件函數體外的變量(此變量是全局變量),需注意:本函數中Extern 聲明的變量的名字必須和要引用的變量名字 完全相同 !!

 

4)static ---靜態局部變量修飾符

1.只允許被初始化一次(初始化和 賦值不一樣!),函數結束不釋放,程序結束才釋放;

2.存儲在靜態存儲區,有默認初始化值(0);

3.依然是個局部變量,只能在被定義的函數體內被使用,不能被函數外所引用;

4.初始化和 賦值不一樣!初始化只能一次,賦值可以多次;

 

擴展:static可以修飾全局變量,但是被修飾後的全局變量 不能被 源程序的 其他文件所引用,只能在本文件中 被使用!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章