【C語言編程入門系列】—— 第四章,C語言基本數據類型!

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

4.1二進制、字節

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

4.1.1 二進制

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

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

圖4.1  時鐘

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

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

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

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

圖4.2  windows計算器

  鼠標點擊DEC,選擇十進制,在DEC中輸入123,可以發現二進制BIN爲01111011,八進制OCT爲173,十六進制爲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種,但是如何運用它們呢?我覺得只需要知道這個數據類型的取值範圍以及佔用多少字節即可。下表請死記硬背:

數據類型取值範圍佔用字節數

 表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兩種。


自學C/C++不易,此路應攜手前行。

如果你想跟着小編一起學編程的話!

可以來我的C語言/C++編程學習交流俱樂部,【點擊進入】

還有(源碼,零基礎教程,項目實戰教學視頻),歡迎初學者和正在進階中的小夥伴們!     

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