在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

關于浮點數和定點數的相互轉換技術探討

454398 ? 來源:FPGA開源工作室 ? 作者:FPGA開源工作室 ? 2020-10-09 16:28 ? 次閱讀

1. 這篇博客將要討論什么?

說來慚愧,作為計算機科班出身的人,計算機基礎知識掌握并不扎實,這里的基礎指的是計算機體系結構中的內容,諸如數據的表示和處理,如float的表示和運算等??础禖SAPP》方知人家老外把這個東西當成重中之重,大量詳細的原理介紹,并配套大量例題。當初本科學的時候,很簡單的了解了下概念而已,所以應該直接將《CSAPP》當做教材來用,里面習題全做,這樣CS出來的基本知識將掌握的很扎實。

學藝不精的后果就在于:學而不思則罔。圣人太厲害了,總結得很到位。比如最近項目中涉及到浮點和定點的轉換,自己就有點蒙,邊看邊實驗,還算理解了,作文以記之。

一直以來,程序中接觸的數據類型都是int整型,char字符型,float單精度浮點型,double雙精度浮點型。看到浮點和定點一直不知道如何劃分這個概念的范疇。以為浮點就是float表示小數,定點就是int可表示整數而已。經過學習明白了顯然是錯誤的。應該是這樣劃分的:

浮點:小數點非固定的數,可表示數據范圍較廣,整數,小數都可表示。包含float,double;

定點:小數點固定,可表示整數,小數。int本質是小數點位于末尾的32位定點數而已;

有了這個認識,后面的討論就可以開始了。

2. 浮點數的表示法

浮點數以float為例討論。

2.1 IEEE 754標準

規定浮點數格式為:
圖片居中使用:

s表示符號位,當s=0,V為正數;當s=1,V為負數

M表示尾數,2>M>=1

E表示階碼

將其封裝到32位的字中:

根據32位數計算為十進制:

可以得出以下結論:

浮點數表示比整型那些更為復雜。如int中0…01000表示8,0…01001表示9,而浮點不能這樣簡單。

浮點數不能移位。因為各個位有特殊含義。像int數乘2可以左移1位實現。

2.2 浮點數的“浮”字體現在哪里?

我們說浮點數的小數點不是固定的,是浮動的,那么如何理解?通過例子可直觀體驗。

這個浮點數表示十進制的1.125

若階碼不變,尾數加1,則表示十進制的1.25

若尾數不變,階碼加1,則表示十進制的2.25

3. 定點數的表示法

對于計算機來說,浮點定點的概念是看不見的,因為它只能看到:0…00001110,至于它表示多少,是邏輯層面的設置。你如果讓它是int那就按照int表示法對每個位賦予意義,如果你讓它是float就按照float表示法賦予意義。

對于000111000001110000011100表示的定點數:

如果我們設定小數點是位于最后一位的,即00011100.00011100.00011100.則其表示28

若設定小數點位于后三位的,即00011.10000011.10000011.100則其表示3.50

若設定小數點位于后四位的,即0001.11000001.11000001.1100則其表示1.75

可以看到:

小數位數越多,表示的精度越高。若小數點后有n位,則其表示的最大精度為

1/(2n);

整數位數越多,可表示的最大值越大。

以8位為例,最高位為符號位:

若整數位占4位,小數位占3位,則其最大精度為0.125,最大值為15.875

若整數位占5位,小數位占2位,則其最大精度為0.250,最大值為31.750

若整數位占6位,小數位占1位,則其最大精度為0.500,最大值為63.500

若整數位占7位,小數位占0位,則其最大精度為1.000,最大值為127

4. 浮點數 & 定點數

4.1 為何要把浮點數轉換為定點數呢?

這來源于項目中神經網絡的需求,網絡中大量的參數,如果全部用F32表示,一是占用空間大,二是讀取效率不高。

如果我們可以將某些浮點數轉換為定點數表示,在接受精度損失的前提下,每次就可以讀取多個進行運行,可顯著提高運算效率。

舉例來說,我們用8位定點數,1個符號位,4個整數位,3個小數位,則其可表示范圍是-16.00~15.875,最大精度0.125。

有幾個浮點數:0.145,1.231,2.364,7.512,每個需要32bit表示。

如果我們將每個量化成一個8位定點數,比如通過某種方法得到:1,10,19,60

此時每個數需要8bit表示。那么讀一個浮點數,可以同時讀4個定點數,且計算效率可以提高。當然這樣做是有風險的:

損失精度,比如再將上述定點數轉化為浮點數:0.125,1.250, 2.375,7.500;

定點數表示范圍有限,加法有可能會溢出,需要拿int16或int32來暫存中間結果;

4.2 如何將浮點數轉換為定點數?

我們用8位定點數,1個符號位,4個整數位,3個小數位。這個3稱為量化系數。該過程稱為量化。

(我們總是將非離散值量化到離散值空間,處理更為簡單)

Int8=float32*2(3)

如:

Int8(10)=float32(1.231)*2(3)

4.3 如何將定點數轉換為浮點數?

該過程稱為反量化。

Float32=int8/2(3)

如:

Float32(1.250)=int8(10)/2(3)

4.4 note

可以這樣理解:量化系數 nnn 決定了我們邏輯上認為01序列中可表示的單位值 1/(2n),CPU讀取的數字表示有多少份單位值。

舉例來說,對于固定的01序列值:0001,1100

同樣的int8數,因為量化系數的不同,代表著不同的f32值。

還有個note:

定點數加減時需要量化系數相同,其值有可能溢出,需要更大定點數來暫存中間值;

兩個定點數乘法后如果需要轉化為f32,則反量化系數變為2?n

5. 總結

可以看到:

浮點數和定點數的轉換是一種映射。將較為密集的數據空間(F32)映射到較為稀疏的空間(int8);

定點數的小數點實際中是沒有的,這只是我們邏輯上的一種設定。01序列是一樣的,CPU讀取都是相同的,因為我們邏輯上小數點的不同位置,我們認為它代表的值是不同的;

作者:鳥戀舊林XD

原文鏈接:https://blog.csdn.net/niaolianjiulin/article/details/82764511

最后給大家一個在線的轉換工具:

https://www.h-schmidt.net/FloatConverter/IEEE754.html

示例:將浮點數55.12345轉換為32bit

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

    關注

    19

    文章

    7496

    瀏覽量

    88002
  • 浮點數
    +關注

    關注

    0

    文章

    60

    瀏覽量

    15871
收藏 人收藏

    評論

    相關推薦

    浮點數定點數

    本帖最后由 gk320830 于 2015-3-5 23:17 編輯 數制,浮點數定點數的文檔,上數電時老師給的。有興趣的同學可以來看看
    發表于 03-27 21:31

    【安富萊——DSP教程】第7章 DSP定點數浮點數(重要)

    第7章DSP定點數浮點數(重要) 本期教程主要跟大家講解一下定點數浮點數的基礎知識,了解這些基礎知識對于后面學習ARM官方的DSP庫大有裨益。特別是初學的一定要理解這些基礎知識。
    發表于 06-03 11:47

    labview里單精度浮點數和十六進制數如何相互轉換

    我需要將一個單精度的浮點數(如0.33)轉換為十六進制數然后通過串口發送,同時還需將串口讀取的十六進制數轉換為單精度浮點數。 求問在labview里如何使
    發表于 10-14 11:04

    第7章 DSP定點數浮點數

    轉dsp系列教程本期教程主要跟大家講解一下定點數浮點數的基礎知識,了解這些基礎知識對于后面學習ARM官方的DSP庫大有裨益。特別是初學的一定要理解這些基礎知識。 7.1 定點數浮點數
    發表于 09-22 13:02

    請問ADSP-21469的匯編指令集ISA/VISA中有沒有專門用來進行浮點數定點數轉換的指令?

    得到的ADC數據需要進行定點數浮點數轉換,為了節省開銷,想使用匯編程序進行定點浮點之間的轉換
    發表于 07-24 07:21

    verilog程序定點數的資料

    verilog程序中需要用到定點數,用浮點數太復雜。。。有誰有關于定點數比較系統的資料嗎。。。我找到黑金的教程,是關于
    發表于 03-27 06:35

    DSP功能函數-定點數互轉

    第17章 DSP功能函數-定點數互轉本期教程主要講解功能函數中的Q7,Q15和Q31分別向其它類型數據轉換。目錄第17章 DSP功能函數-定點數互轉
    發表于 08-11 08:04

    功能函數中的浮點數轉換定點數

    第16章 DSP功能函數-數據拷貝,數據填充和浮點定點本期教程主要講解功能函數中的數據拷貝,數據填充和浮點數轉換定點數。目錄第16章 D
    發表于 08-17 07:37

    定點數浮點數的區別是什么

    定點數浮點數的區別目的:理解定點數浮點數在傅里葉變換(FFT)的實際應用中的選擇單片機中如果需要進行一定的運算(常見的傅里葉變換)時,需要在不同情況下對AD采集的數據進行一定的處理
    發表于 02-21 07:22

    請問ADSP-21469的匯編指令集ISA/VISA中有沒有專門用來進行浮點數定點數轉換的指令?

    得到的ADC數據需要進行定點數浮點數轉換,為了節省開銷,想使用匯編程序進行定點浮點之間的轉換
    發表于 11-29 08:03

    功能:雙字節十六進制定點數轉換成格式化浮點數

    功能:雙字節十六進制定點數轉換成格式化浮點數 入口條件:雙字節定點數的絕對值在[R0]中,數符在位1FH中,整數部分的位數在A中。
    發表于 01-19 22:45 ?3175次閱讀

    在FPGA里浮點數定點數表示法原理展示

    浮點數定點數表示法是我們在計算機中常用的表示方法 所以必須要弄懂原理,特別是在FPGA里面,由于FPGA不能像在MCU一樣直接用乘除法。 首先說一下簡單的定點數定點數是克服整數表示
    發表于 11-18 02:15 ?8780次閱讀
    在FPGA里<b class='flag-5'>浮點數</b>與<b class='flag-5'>定點數</b>表示法原理展示

    單片機浮點數運算的源碼設計

    單片機執行程序的過程,實際上就是執行我們所編制程序的過程。即逐條指令的過程。本文詳細介紹了浮點數在單片機中的表示方式和匯編子程序,浮點數定點數加減法要困難,但是克服了定點數表示范圍小
    的頭像 發表于 03-07 15:19 ?1w次閱讀
    單片機<b class='flag-5'>浮點數</b>運算的源碼設計

    定點數浮點數在STM32單片機中使用傅里葉(FFT)變換的理解

    定點數浮點數的區別目的:理解定點數浮點數在傅里葉變換(FFT)的實際應用中的選擇單片機中如果需要進行一定的運算(常見的傅里葉變換)時,需要在不同情況下對AD采集的數據進行一定的處理
    發表于 12-24 19:22 ?16次下載
    <b class='flag-5'>定點數</b>和<b class='flag-5'>浮點數</b>在STM32單片機中使用傅里葉(FFT)變換的理解

    定點數浮點數的概念 浮點數二進制序列與指數表達式之間的轉化

    的缺點:由于小數點位置固定不變,定點數所表示的數的范圍非常有限,不能同時表達特別大或特別小的數,所以才出現了浮點數,以此來擴充數的范圍,同時浮點數也廣泛應用于精度要求高的場合。簡單的理解浮點數
    的頭像 發表于 08-22 16:06 ?8138次閱讀
    <b class='flag-5'>定點數</b>和<b class='flag-5'>浮點數</b>的概念 <b class='flag-5'>浮點數</b>二進制序列與指數表達式之間的轉化
    主站蜘蛛池模板: 国产操女| 五月婷婷精品| 性性欧美| 欧美xxx另类| free性欧美video69| 中文字幕一区二区三区在线不卡| 国产黄色网| 日本在线视频二区| 99国产精品久久久久久久成人热| 伊人久久大香线蕉综合电影| 亚洲电影天堂网| 色多多官网| 久久国产精品99久久久久久老狼| 国产性片在线| 午夜精品在线观看| 久操视频免费观看| 欧美性极品xxxxx| 老师啊灬啊灬用力啊快224视频| 一级特黄牲大片免费视频| 色欧美色| 经典三级一区在线播放| 4虎.最新地址| 欧美视频图片| 国产欧美日韩haodiaose| 狠狠色噜噜狠狠狠97影音先锋 | 久久久午夜影院| 亚洲色网址| 九九re6精品视频在线观看| 亚洲bt天堂| 你懂的在线免费视频| 丁香婷婷六月天| 好硬好湿好爽再深一点h| 一区二区三区精品国产欧美| 如果我们是季节韩剧在线观看| 美国一级做a一级爱视频| 99成人在线| 国产一级免费视频| 男女性生动态免费视频| 天堂网在线视频| 激情亚洲| 欧美成人免费大片888|