C語言編程入門之--第四章C語言基本數據類型


 

  導讀:C語言程序中經常涉及一些數學計算,所以要熟悉其基本的數據類型。數據類型學習起來比較枯燥,不過結合之前的內存概念,以及本節的字節概念,相信數據類型也就不難理解了。本章從二進制的基本概念開始,然后介紹機器語言通用的計算單位字節,最后再介紹C語言中基本的數據類型及其基本概念。

 

4.1 二進制、字節

  計算機,電子信息專業類的大學課程,肯定會有講解二進制與十進制轉換的課程,本節為了篇幅小一點,只提供windows計算器中進制轉換工具的使用方法,希望讀者諒解。

4.1.1 二進制

  機器之間溝通用的是機器語言,機器語言用二進制數據相互溝通,什么是二進制數據?為什么是二進制數據呢?我們日常生活中比較熟悉的是十進制數據,當數字從1開始不停的加1,加到10的時候再加1就會變成11,那么個位又變回1了,這就叫做滿101

  還有比較熟悉的是十二進制,就是我們的時鍾了,當時針從1開始不停加到12時,再加1,時針就又變成1了。當然如果有人習慣24小時制,那就理解為二十四進制也可。

圖4.1  時鍾 

  同理,分針和秒針就是60進制了,滿601

  那么,二進制就應該是滿21咯,對的,舉個簡單例子:十進制的1,2,3在二進制為01,10,11。可以看到十進制的3在二進制的第一位為1,因為它滿2就進1了。

  平時用進制轉換可以搬用公式計算,當然快捷的辦法是用windows自帶的計算器,打開win10系統的計算器軟件,選擇程序員選項。

  注意:不同版本的windows的計算器用法稍微不同,請讀者自行了解。

圖4.2  windows計算器

  鼠標點擊DEC,選擇十進制,在DEC中輸入123,可以發現二進制BIN01111011,八進制OCT173,十六進制為7B,如圖4.3所示,

 

圖4.3  計算器進制轉換

   計算器基本用法就是這樣了。

   注意:為什么機器語言是二進制語言?涉及到數字電路方面的知識,說白了CPU,內存這些就是大量的開關組合起來的,開就是1,關就是0,這正是二進制的一種體現。

4.1.2 字節

  二進制最小單位是位(bit),英文有個詞組叫做a little bit,意思就是一點點,bit就是最小的位元,比如十進制1的二進制有一個位,十進制2的二進制有兩個位“10”,十進制3的二進制也能用兩位表示“11”,十進制4的二進制用三個位表示“100”。但是C語言內存中最小數據是1個字節(byte),1個字節有八個位,也就是十進制1的二進制表示為“00000001”,十六進制表示為“0x01”。來個復雜的,十進制的141表示為......打開計算器,可知二進制為“‭10001101‬”,它的十六進制為“0x8D”。

  注意:十六進制一般會在數值前添加“0x”,用於區分十進制類似的數,比如十進制69和十六進制69就不相等,十六進制的69等於十進制的105,所以用“0x69”表示十六進制。

     因為1個字節有八位,所以1個字節數值范圍在0~255之間,因為當二進制八位數都為1時即“11111111”最大,等於255。

  所以2個字節有十六位,數值范圍在0~65535之間,因為當二進制十六位數都為1時即“1111111111111111”最大,等於65535。

  所以4個字節有三十二位,數值范圍在0~4294967295‬之間......

  所以8個字節有六十四位,數值范圍在......

 

4.2 基本數據類型

  C語言中基本數據類型有字符型char,布爾型bool,整型int,長整型long,浮點型float等等,對應的還有無符號字符型unsigned char,無符號整型unsigned int等等。

  數據類型有很多,目前就介紹6種,但是如何運用它們呢?我覺得只需要知道這個數據類型的取值范圍以及占用多少字節即可。下表請死記硬背:

  

數據類型

取值范圍

占用字節數

char

-128 到 127

1

int

 -2,147,483,648 到 2,147,483,647

4

float

1.2E-38 到 3.4E+38

4

unsigned char

0 到 255

1

unsigned int

0 到 4,294,967,295

4

bool

true或者false

2

 表4.1  列舉一些基本數據類型

 

  注意:當然C語言數據類型不止這些,因為這系列博客只是編程入門篇,不是搬移各個博客的匯總篇,所以數據類型只介紹其中一部分,日后需要了解別的部分應該就能更輕松的了解。

  發現問題:表中char型和unsigned char型的占用字節數都是1個,但是取值范圍不同。

  解釋:unsigned的英文直譯是無符號的,而負數的符號是一個負號“-”,所以無符號就是無負號,就是大於0的數。而有符號,就是能夠有負號,可以取值小於0,這樣就不難理解他們的取值范圍了。

  注意:數據類型不加unsigned默認為有符號類型。

  比如char,是可以有負號的char,取值范圍可以小於0,由於占的字節數是1個,所以范圍是-128~127,數據的變化總量就是|-128|+127=255,正好是一個字節的取值量。

    unsigned char,是無符號的char,取值范圍必須大於0,范圍是0~255,。同理,int和unsigned int也是這樣對比。

    float類型是浮點類型,說白了就是帶小數點的,比如float類型的值可以取3.1415,而int類型只能取值為3,后面章節講到運算方面會再次對比float和int。

    編程的時候會需要做程序判決功能,就會用到bool類型的數據,取值有真true和假false兩種。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM