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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

浮点编码

發布時間:2023/12/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浮点编码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

浮點編碼

問題,如何在內存中表示小數?

float fltValue = 16.25; //fltValue對應的十六進制為多少?

前期準備的知識,如何將十進制小數,轉變為二進制。?十進制的123的本質:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

同理:

? ? ? ? ? ? ? ? ?

所以,16.25變為二進制后為:10000.01

對于任意一個小數,其實都可以變為科學記數法表示。如:

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

對于二進制,也是完全類似的:

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

綜上,從科學計數法的角度看,任何數字,都可以分為3部分:

1. 符號 (+)
2. 精度 (1.00001)
3. 指數 (4)

float浮點編碼就是基于科學計數法發明的約定。?float,將4個字節(32位),被分割成3部分:

1、1bit: 符號位
2、中間的8bit: 指數
3、0~22的23bit: 精度位

具體的編碼過程:

? ??1. 將十進制小數,轉為二進制小數

? ??2. 將二進制小數轉為科學計數法

? ??3. 如果為負數,則符號位為1;正數則為0

? ??4. 對于指數部分,加上127后,存儲

? ??5. 精度部分,原樣保存(只保存小數部分,因為二進制的科學計數法的整數部分都是一樣的)

如:

將16.25編碼至內存 1. 10000.01 2. +1.000001 * 2^4 3. 符號部分:0 4. 指數部分:4+127 = 131,轉變成二進制:10000011 5. 精度部分:00000100000000000000000 最終,組合: 0 10000011 00000100000000000000000 0100 0001 1000 0010 0000 0000 0000 0000 => 0x41820000

?

總結

以上是生活随笔為你收集整理的浮点编码的全部內容,希望文章能夠幫你解決所遇到的問題。

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