stone2083

          IEEE 754 浮點存儲小記

          IEEE 754:

          https://zh.wikipedia.org/wiki/IEEE_754


          FLOAT:

          31  30         22       15          7          0

          +---+----------+---------+----------+----------+

          |   |          |                               |

          +---+----------+---------+----------+----------+

          + S +     E    +               M               +


          EXAMPLE(5.5):

          =============================

          int main() {

              float a = 5.5;

              int *p = &a;

              printf("%d\n", *p);

              printf("%X\n", *p);

          }


          gcc -o main main.c; ./main

          十進制:    1085276160

          十六進制:  40B00000

          =============================



          十進制 = 二進制 = 二進制指數形式

          5.5    = 101.1  = 1.011 * 2^2


          ==> S=0 E=2 M = 11


          31  30         22       15          7          0

          +---+----------+---------+----------+----------+

          | 0 | 10000001 | 0110000 | 00000000 | 00000000 |

          +---+----------+---------+----------+----------+

          + S +     E    +               M               +


          轉換成INT:

          二進制:    01000000101100000000000000000000

          十進制:    1085276160

          十六進制:  40B00000



          EXAMPLE(5.1):

          ===========================================

          int main() {

              float a = 5.1;

              int *p = &a;

              printf("Float:\t%f\n", a);

              printf("十進制:\t%d\n", *p);

              printf("十六進制:\t%X\n", *p);

          }


          gcc -o main main.c; ./main

          Float:    5.100000

          十進制:    1084437299

          十六進制:  40A33333

          ===========================================


          存儲形式:0b01000000101000110011001100110011

          有效尾數:01000110011001100110011

          表達方式:1.01000110011001100110011 * 2^2 ==> 101.000110011001100110011


          101 ==> 5

          0.000110011001100110011 ==> 2^-4 + 2^-5 + 2^-8 + 2^-9 + 2^-12 + 2^-13 + 2^-16 + 2^-17 + 2^-20 + 2^-21


          實際表達:      5.09999990463256836

          保留6位小數:   5.100000

          posted on 2017-10-12 11:23 stone2083 閱讀(659) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 荥阳市| 南溪县| 兴隆县| 永城市| 吉木萨尔县| 乌审旗| 怀宁县| 托克逊县| 天镇县| 弋阳县| 九寨沟县| 鄱阳县| 保山市| 舞钢市| 兴义市| 黎平县| 仲巴县| 花莲市| 册亨县| 溆浦县| 卫辉市| 太仆寺旗| 玛沁县| 河池市| 来安县| 邢台县| 鹤岗市| 颍上县| 杭锦旗| 昂仁县| 永定县| 通渭县| 长泰县| 米林县| 永清县| 池州市| 乐昌市| 蕲春县| 楚雄市| 靖西县| 古丈县|