程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 我也要學C語言-第七章:IEEE浮點數表示法

我也要學C語言-第七章:IEEE浮點數表示法

編輯:關於C語言

之前呢,已經學習過無符號,有符號整數的表示(用補碼),其實還有2個類型我沒有說過,就是字符型和字符串型,主要我覺得這2種類型比較簡單,看1會說就明白。字符型是用的阿斯卡碼表示的,字符串型也一樣,只是C的字符串呢,在結尾有個00。這個00就是判斷字符串是否結束!引用字符串的變量其實就是代表字符串的首地址,然後呢依次檢查下去,只要遇到了00就代表此字符串結束了。

IEEE浮點表示法

  IEEE浮點數表示:符號位(1位) +     指數位置(8位)   +尾數位(23位)

  1:將要表示的浮點數轉化為二進制表示。比如:

    123456.0f = 11110001001000000

  2:然後移動小數點到最高位只有1位的1。比如:

    1.1110001001000000 一共移動了16位

  3:因為小數點每向左移動一位就相等於以2為底的指數加1.所以:

    1.1110001001000000 * 2^16

  4:指數部分呢一共是需要8位,把十進制的指數轉化為二進制時先加上127(為什麼要加127是因為它把127當著0.因為移位不只是往一邊移,8位中間點正是7F,7F就是十進制的127).例如:

    16+127=143 = 10001111

  5:12345.0f由於是正數,所以符號位為0.(注意:尾數位少了1個1,是因為最高位肯定是1,所以為了節約內存考慮)所以:

    符號位(1位) +     指數位置(8位)   +尾數位(23位)

                  0                   10001111             11100010010000000000000

     然後!再組合起來!01000111111100010010000000000000

  然後!再4位1組!!  0100 0111 1111 0001 0010 0000 0000 0000

  然後! 再轉化成16進制   4     7       F      1        2      0      0      0

  然後!再組合起來!47F12000

  然後!再倒過來! 0020F147(為什麼要倒過來是因為VC內存排列是高位對高位,低位對低位)

  然後!再進行檢驗!:

  這樣!我們就知道調試浮點數的時候,為什麼內存裡面的內容怪怪的了!!!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved