之前呢,已經學習過無符號,有符號整數的表示(用補碼),其實還有2個類型我沒有說過,就是字符型和字符串型,主要我覺得這2種類型比較簡單,看1會說就明白。字符型是用的阿斯卡碼表示的,字符串型也一樣,只是C的字符串呢,在結尾有個00。這個00就是判斷字符串是否結束!引用字符串的變量其實就是代表字符串的首地址,然後呢依次檢查下去,只要遇到了00就代表此字符串結束了。
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內存排列是高位對高位,低位對低位)
然後!再進行檢驗!:
這樣!我們就知道調試浮點數的時候,為什麼內存裡面的內容怪怪的了!!!