日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言中小数在内存中的存储,c语言中小数在内存中的存储

發布時間:2025/3/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言中小数在内存中的存储,c语言中小数在内存中的存储 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉至:https://blog..net/tqs_1220/article/details/73550899

首先看float和double在內存中是怎么存儲的?

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

范圍:-2^-128 ~2^127? (-3.40E-38~3.40E+38)

double:符號位(1位)+指數位(11位)+尾數尾(52位)

范圍:-2^-1024~2^1023(-1.79E-308~1.79E+308)

在計算機中整數的存儲是大多數人能夠輕易理解得,比如在數據寬度為1個字節時,如果整數表示無符號數時就是0--15.如果整數用作有符號數時:0000--01111代表十進制的0--7。而1000--1111表示從(-8)--(-1)。然而計算機存儲數據的方式都是一樣的,并沒有區分有符號和無符號,是我們使用數據的人來確定它到底是有符號還是無符號。而有符號數據一般使用在 數據比較、數據運算等等,其他方面差別并不是很大。

整數十分好理解,但是小數的存儲就讓人感到困難多了,很多不懂IEEE規則。我們不需要懂它的規則,我們只需要記住存儲的方法,這樣以后看到小數就能輕易地知道它在內存中是如何存儲的了。具體分為下面幾步:

1、知道如何將十進制的整數部分和小數部分化成二進制。

整數就是不斷除2得到余數,例:8的二進制可進行這樣計算:

8/2=4余數為0

4/2=2余數為0

2/2=1余數為0

1/2=0余數為1

整數從下向上看,所以8的二進制數就是1000。

小數對應的就是乘,例0.25的二進制可進行這樣計算:

0.25*2=0.5整數部分為0

0.5*2=1.0 整數部分為1

當小數部分為0時結束運算,像有些數據會一直進行這種運算例如0.4永遠無法將小數部分化為0,所以就有了精度的概念。

小數從上到下看,所以0.25的二進制數就是01。

2、知道小數的存儲是32位數據的,其中位31是符號位;位30--位23表示指數部分;位22--位0表示尾數(下面會介紹)部分。

3、不管數據的正負,先按照它的絕對值將它表示為二進制形式,注意整數和小數部分用小數點分開。例如:8.25可表示的二進制形式為1000.01。

4、將8.25的二進制形式化為科學計數法形式:1.00001*2^3,其中左移指數為正,右移指數為負。

5、開始存數:

符號位 ? ? ? ? ? ? ?指數部分(8位) ? ? ? ? ? ? ? ? ? ?尾數部分(23位)

0 ? ? ? ? ? ? ? ? ? ? ? ?00000000 ? ? ? ? ? ? ? ?00000000000000000000000

尾數部分:即化為科學計數法后的小數部分,如1.00001*2^3它的尾數部分就是00001,因為在化為二進制時是從高到低看下來的,所以在尾數部分存數時就是從高到低,8.25的尾數部分就是00001000000000000000000。

指數部分:指數部分的最高位存的是左移還是右移。左移為1,右移為0。同時將指數減一放到指數部分(指數部分最高位除外),1.00001*2^3的指數部分就是10000010。

符號部分:8.25為正數,存的是0。

所以8.25在計算機中的的數據存儲就是01000001000001000000000000000000

0100 0001 0000 0100 0000 0000 0000 0000===41040000

下面講講不帶整數的小數是如何存儲數據的。

除開指數部分存儲以外,其他步驟完全一樣。我們舉例說明:0.25

0.25的二進制形式為0.01,它化為科學計數法需要右移兩位,即1.0*2^-2。

尾數部分全0。

指數部分最高位為0(右移)。

(-2)-1=-3=FD=11111101,去除最高位,將FD低七位和指數部分最高位合在一起,即0111 1101。

0.25的32位數據即:0011 1110 1000 0000 0000 0000 0000 0000==3E800000

總結

以上是生活随笔為你收集整理的c语言中小数在内存中的存储,c语言中小数在内存中的存储的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。