關於C語言中類型的理解,有符號無符號的理解以及浮點數的理解


最近因為要開始找工作,因此開始重新寫了一遍C語言。那么重新學了一遍發現自己有不少盲點,因此要好好的總結一下。

  1、關於C語言類型的理解

  2、關於C語言有符號無符號的理解

  3、關於浮點數的理解

  1、關於C語言類型的理解

  我們在平時都知道C語言的類型有很多種,比如int,char,float,當然同時還有一些struct我們自己定義的一些C語言類型,在C語言的應用中,我們可以自覺地使用這種類型來進行定義變量,那么類型究竟什么什么東西?變量又是干什么的呢?

  答:首先我們要知道,我們的所有程序編寫其實說白了同時操縱計算機的內存,但是我們不可能直接操縱內存,因此我們需要找到一些接口來操縱內存。那么我覺得這些接口其實就是變量,比如我們int a,那么我們就可以通過a來操縱這段內存。

    那么類型是什么呢?我們在執行int a這段代碼的時候電腦做了些什么呢?我認為至少做了兩個部分。第一就是指定了某段內存的地址。比如0x11111開始的內存部分。第二就是指定了內存的大小,比如使用int就指定了我們可以操縱4個字節的內存。換句話說,類型就是將內存的屬性賦予的變量

    以上就是我對類型和變量的理解。

  2、關於C語言有符號和無符號的理解

    首先要說一下整型中一共有三種表現形式,分別是無符號整型,有符號整型中的正數表示和有符號整型中的負數表示方法。其中無符號整型的范圍為0~232這樣的范圍,而有符號整型為2-31~231這樣的范圍,其差別就在於前者最高位可以用來表示數字,而后者最高位只能用來表示符號。而有符號整型中的表示方法又可以分成兩種,其中正數的表示方法就是其自身,而負數的表示方法為其正數的所有位置倒過來再加1.

    另外還有一點需要注意那就是有符號數與無符號數相加結果是無符號數

    以上就是我對有符號書和無符號數的理解。

  3、關於浮點數的理解

    我們以float為例,float的表示方法和int是完全不同的,首先說一下他們都是32位的 機器,但是其表示方式完全不同。float可以分成三個部分,分別是第32位(符號位),從第31位到第23位(指數位,從第22位到第0位(尾數位)。

    其中第32位符號位表示正負數,如果是0表示正數,1表示負數,其中第31位到第23位表示指數位,從第22位到第0位表示尾數位。

  接下來我舉一個實例說明,黃色表示符號位,綠色表示指數位,咖啡色表示尾數位。

    舉例:20.75(10進制數字)

     他的框架是這樣的:

      1、把整數位變成二進制

      2、把小數位變成二進制

      3、移動位置使其在0和1中間,並確定其指數的值

      4、最終確定表示

   其中,將20轉換位2進制數字,可以采用倒2法(0001 0100)

      將0.48變成二進制數字,這里要說一下,如果是整數位我們可以采用無限除2的方法,小數位我們采用無限乘以2的方法。所以小數位為10

      綜上20.75變成二進制為10100.10。

      接着,移動位置使其在0~1中間。為1.010010*24則其指數值為4+127=131(為啥是加127我也沒弄明白)

      最后,我們可以確定為其表示為0100000111010010000000000000000.

      以上就是我對浮點數的理解。

 

 

 

 

 

 

 

 

  

 


免責聲明!

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



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