0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

在C語言中,如何分配浮點數(shù)的存儲方式?

存儲界 ? 來源:未知 ? 作者:胡薇 ? 2018-08-28 16:32 ? 次閱讀

C語言中,對于浮點類型的數(shù)據(jù)采用單精度類型(float)和雙精度類型(double)來存儲,float數(shù)據(jù)占用32bit,double數(shù)據(jù)占用64bit,我們在聲明一個變量float f= 2.25f的時候,是如何分配內(nèi)存的呢?

float在內(nèi)存中的存儲方式如下圖所示:

double在內(nèi)存中的存儲方式如下圖所示:

無論是單精度還是雙精度在存儲中都分為三個部分:

1.符號位(Sign) : 0代表正,1代表為負

2.指數(shù)位(Exponent):用于存儲科學計數(shù)法中的指數(shù)數(shù)據(jù),并且采用移位存儲

3.尾數(shù)部分(Mantissa):尾數(shù)部分

首先來看float類型(以2.25為例)

步驟一:符號位(占1個bit位)的數(shù)值

很容易看出此數(shù)為正數(shù),因此符號位為0。

步驟二:指數(shù)位(占8個bit位)的數(shù)值

第一步:先將十進制的2.25轉換成二進制0100.01;

第二步:將100.01用二進制的科學計數(shù)法表示為1.001;

第三步:將第二步所得數(shù)值寫成指數(shù)形式1.001*(2^2);

第四步:將指數(shù)數(shù)值2+127=129,將129轉化成二進制形式(1000 0001)寫到指數(shù)部位。

步驟三:尾數(shù)部分(占23個bit位)的數(shù)值

將步驟二第二步中所得的數(shù)1.001,小數(shù)點后的三位數(shù)001寫到指數(shù)部位,剩下的位用0補齊即可。

所以單精度浮點數(shù)2.25在內(nèi)存中的表示方式為:

0 1000 0001 00100000000000000000000

再來看double類型(還是以2.25為例)

步驟一:符號位(占1個bit位)的數(shù)值

很容易看出此數(shù)為正數(shù),因此符號位為0。

步驟二:指數(shù)位(占11個bit位)的數(shù)值

第一步:先將十進制的2.25轉換成二進制0100.01;

第二步:將100.01用二進制的科學計數(shù)法表示為1.001;

第三步:將第二步所得數(shù)值寫成指數(shù)形式1.001*(2^2);

第四步:將指數(shù)數(shù)值2+1023=1025,將129轉化成二進制形式(100 0000 0001)寫到指數(shù)部位。

步驟三:尾數(shù)部分(占52個bit位)的數(shù)值

將步驟二第二步中所得的數(shù)1.001,小數(shù)點后的三位數(shù)001寫到指數(shù)部位,剩下的位用0補齊即可。

所以雙精度浮點數(shù)2.25在內(nèi)存中的表示方式為:

0 100 0000 0001 0010000000000000000000000000000000000000000000000000

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內(nèi)存
    +關注

    關注

    8

    文章

    2945

    瀏覽量

    73729
  • 浮點數(shù)
    +關注

    關注

    0

    文章

    59

    瀏覽量

    15845

原文標題:浮點數(shù)在內(nèi)存中的存儲方式

文章出處:【微信號:cunchujie,微信公眾號:存儲界】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    小數(shù)在內(nèi)存中是如何存儲的?為什么C語言中浮點數(shù)不支持位移操作?

    小數(shù)在內(nèi)存中是如何存儲的?為什么C語言中浮點數(shù)不支持位移操作?
    發(fā)表于 08-16 09:24 ?955次閱讀
    小數(shù)在內(nèi)存中是如何<b class='flag-5'>存儲</b>的?為什么<b class='flag-5'>C</b><b class='flag-5'>語言中</b>的<b class='flag-5'>浮點數(shù)</b>不支持位移操作?

    浮點數(shù)如何存儲?

    浮點數(shù)如何存儲玩轉浮點數(shù)
    發(fā)表于 12-30 07:10

    浮點數(shù)的表示方法

    浮點數(shù)的表示方法  浮點數(shù),是指小數(shù)點在數(shù)據(jù)中的位置可以左右移動的數(shù)據(jù)。它通常被表示成:    N = M* RE  這里的M(Mantissa)被稱為浮點數(shù)
    發(fā)表于 10-13 17:13 ?1.6w次閱讀
    <b class='flag-5'>浮點數(shù)</b>的表示方法

    浮點數(shù)常用的編碼方法

    浮點數(shù)常用的編碼方法  前面已經(jīng)說到,計算機內(nèi),浮點數(shù)被表示為如下格式:    通常情況
    發(fā)表于 10-13 17:21 ?4406次閱讀
    <b class='flag-5'>浮點數(shù)</b>常用的編碼方法

    modbus 如何讀取浮點數(shù)

    本文為大家介紹modbus讀取浮點數(shù)的兩個程序設計。
    發(fā)表于 02-08 10:03 ?1.4w次閱讀

    單片機浮點數(shù)運算的源碼設計

    單片機執(zhí)行程序的過程,實際上就是執(zhí)行我們所編制程序的過程。即逐條指令的過程。本文詳細介紹了浮點數(shù)單片機中的表示方式和匯編子程序,浮點數(shù)比定點數(shù)
    的頭像 發(fā)表于 03-07 15:19 ?1w次閱讀
    單片機<b class='flag-5'>浮點數(shù)</b>運算的源碼設計

    浮點數(shù)在內(nèi)存中的存儲

    浮點數(shù)在內(nèi)存中的存儲和整數(shù)不同,因為整數(shù)都可以轉換為一一對應的二進制數(shù)據(jù)。而浮點數(shù)存儲是由符號位 (sign) + 指數(shù)位 (exponent) + 小數(shù)位 (fraction) 組
    的頭像 發(fā)表于 09-20 10:52 ?3983次閱讀
    <b class='flag-5'>浮點數(shù)</b>在內(nèi)存中的<b class='flag-5'>存儲</b>

    談一談浮點數(shù)的精度問題

    還是要從浮點數(shù)存儲和標識出發(fā)來處理該問題,既然浮點數(shù)天然就存在一定的誤差,而有時候計算又無法獲得唯一的數(shù)值,如下圖所示,浮點數(shù)計算出來的實軸上的值都會因為
    的頭像 發(fā)表于 08-11 14:28 ?4299次閱讀
    談一談<b class='flag-5'>浮點數(shù)</b>的精度問題

    什么是浮點數(shù)?浮點數(shù)在內(nèi)存中的存儲

    浮點型簡單講就是實數(shù)的意思。浮點數(shù)計算機中用以近似表示任意某個實數(shù)。
    的頭像 發(fā)表于 11-09 11:07 ?4946次閱讀
    什么是<b class='flag-5'>浮點數(shù)</b>?<b class='flag-5'>浮點數(shù)</b>在內(nèi)存中的<b class='flag-5'>存儲</b>

    什么是浮點數(shù)

    Python數(shù)據(jù)類型第一種:字符串(str)。 Python數(shù)據(jù)類型第二種:整數(shù)(int)。 Python數(shù)據(jù)類型第三種:浮點數(shù),浮點數(shù)的英文名是float,浮點數(shù)沒有簡寫。
    的頭像 發(fā)表于 02-23 14:58 ?4396次閱讀

    PLC中浮點數(shù)的二進制表示

    我們?nèi)粘J褂玫母黝悢?shù)據(jù),都是以二進制的方式存儲的。以浮點數(shù)為例,PLC中其表示方式使用了IEEE 754標準。許多編程
    的頭像 發(fā)表于 03-23 13:50 ?4855次閱讀
    PLC中<b class='flag-5'>浮點數(shù)</b>的二進制表示

    C浮點數(shù)與字符轉換工具

    C浮點數(shù)與字符轉換工具免費下載。
    發(fā)表于 06-19 18:17 ?0次下載

    西門子PLC浮點數(shù)程序案例分享

    64位浮點數(shù)保存于VB0開始的存儲區(qū)中,轉換得出的32位浮點數(shù)保存于VD100中。
    發(fā)表于 10-27 17:07 ?3029次閱讀
    西門子PLC<b class='flag-5'>浮點數(shù)</b>程序案例分享

    modbus浮點數(shù)怎么讀取

    常重要的。 首先,要理解Modbus浮點數(shù)的表示方式。Modbus協(xié)議中,浮點數(shù)采用了IEEE 754標準進行編碼和解碼。IEEE 754標準定義了
    的頭像 發(fā)表于 12-28 14:38 ?5246次閱讀

    一文帶你秒懂IEEE 754浮點數(shù)

    一、簡介1、常見的浮點數(shù)表示方式是IEEE754標準,它規(guī)定了浮點數(shù)存儲格式和運算規(guī)則,這個標準定義了兩種浮點數(shù)表示:單精度和雙精度。2、
    的頭像 發(fā)表于 03-18 08:09 ?7345次閱讀
    一文帶你秒懂IEEE 754<b class='flag-5'>浮點數(shù)</b>