www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 原創(chuàng) > 振南技術(shù)干貨集(風(fēng)云錄)
[導(dǎo)讀]很多人不能很好的使用和處理浮點(diǎn),其主要根源在于對它的表達(dá)與存儲(chǔ)方式不是很理解。最典型的例子就是經(jīng)常有人問我:“如何使用串口來發(fā)送一個(gè)浮點(diǎn)數(shù)?”

關(guān)于浮點(diǎn)數(shù)的傳輸

很多人不能很好的使用和處理浮點(diǎn),其主要根源在于對它的表達(dá)與存儲(chǔ)方式不是很理解。最典型的例子就是經(jīng)常有人問我:“如何使用串口來發(fā)送一個(gè)浮點(diǎn)數(shù)?”

我們知道C語言中有很多數(shù)據(jù)類型,其中unsigned char、unsigned short、unsigned int、unsigned long我們稱其為整型,顧名思義它們可以表達(dá)整型數(shù)。而能夠表達(dá)的數(shù)值范圍與數(shù)據(jù)類型所占用的字節(jié)數(shù)有關(guān)。數(shù)值的表達(dá)方法比如簡單,如下圖所示。

圖2.4 整型變量數(shù)值的計(jì)算方法

一個(gè)字節(jié)可以表達(dá)0~255,兩個(gè)字節(jié)(unsigned short)自然就可以表達(dá)0~65535,依次類推。

當(dāng)需要把一個(gè)整型數(shù)值發(fā)送出去的時(shí)候,我們可以這樣作:

也就是將構(gòu)成整型的若干字節(jié)順序發(fā)送即可。當(dāng)然接收方一定要知道如何還原數(shù)據(jù),也就是說它要知道自己接收到的若干字節(jié)拼在一起是什么類型,這是由具體通信協(xié)議來保障的。

OK,關(guān)于整型比較容易理解。但是換成float,很多人就有些迷糊了。因?yàn)閒loat的數(shù)值表達(dá)方式有些復(fù)雜。有些人使用下面的方法來進(jìn)行浮點(diǎn)的發(fā)送。

很顯然這種方法非常的“業(yè)余”。還有人問我:“浮點(diǎn)小數(shù)字前后的數(shù)字可以發(fā)送,但是小數(shù)點(diǎn)怎么發(fā)?”這赤裸裸的體現(xiàn)了他對浮點(diǎn)類型的誤解。

不要被float數(shù)值的表象迷惑,它實(shí)質(zhì)上只不過是4個(gè)字節(jié)而已,如圖2.5所示。

圖2.5 浮點(diǎn)變量數(shù)值的計(jì)算方法

所以,正確的發(fā)送浮點(diǎn)數(shù)的方法是這樣的:

接收者將數(shù)據(jù)還原為浮點(diǎn):

其實(shí)我們應(yīng)該發(fā)現(xiàn)數(shù)據(jù)類型的實(shí)質(zhì):不論是什么數(shù)據(jù)類型,它的基本組成無非就是內(nèi)存中存儲(chǔ)的若干個(gè)字節(jié)。只是我們?nèi)藶榈馁x予了這些字節(jié)特定的編碼方式或數(shù)值表達(dá)??创┝诉@些,我們就認(rèn)識到了數(shù)據(jù)的本質(zhì)了,我們甚至可以直接操作數(shù)據(jù)。

聲明:該篇文章為本站原創(chuàng),未經(jīng)授權(quán)不予轉(zhuǎn)載,侵權(quán)必究。
換一批
延伸閱讀

在計(jì)算機(jī)科學(xué)領(lǐng)域,浮點(diǎn)數(shù)作為一種廣泛應(yīng)用的數(shù)值數(shù)據(jù)類型,其在科學(xué)計(jì)算、圖形處理、金融分析等多個(gè)領(lǐng)域發(fā)揮著核心作用。然而,浮點(diǎn)數(shù)運(yùn)算卻常常受到精度問題的困擾,這源于浮點(diǎn)數(shù)在計(jì)算機(jī)中的表示方式和運(yùn)算規(guī)則。本文將深入剖析浮點(diǎn)數(shù)...

關(guān)鍵字: 浮點(diǎn)數(shù) 數(shù)值數(shù)據(jù)

在數(shù)字信號處理和計(jì)算密集型應(yīng)用中,F(xiàn)PGA(現(xiàn)場可編程門陣列)因其高度的并行性和可配置性而備受青睞。在FPGA中,數(shù)字的表示方式對于實(shí)現(xiàn)高效的算法和滿足特定的性能要求至關(guān)重要。其中,浮點(diǎn)數(shù)和定點(diǎn)數(shù)是兩種常見的數(shù)字表示方法...

關(guān)鍵字: FPGA 浮點(diǎn)數(shù)

在FPGA(現(xiàn)場可編程門陣列)的廣闊應(yīng)用領(lǐng)域中,數(shù)學(xué)運(yùn)算作為其核心功能之一,對于實(shí)現(xiàn)高效、精準(zhǔn)的數(shù)據(jù)處理至關(guān)重要。在FPGA的數(shù)學(xué)運(yùn)算體系中,浮點(diǎn)數(shù)與定點(diǎn)數(shù)是兩種關(guān)鍵的數(shù)字表示方式,它們各有特點(diǎn),適用于不同的應(yīng)用場景。本...

關(guān)鍵字: FPGA 現(xiàn)場可編程門陣列 浮點(diǎn)數(shù)

memcpy函數(shù)的功能是用來作內(nèi)存搬運(yùn),就是將數(shù)據(jù)從一個(gè)數(shù)組賦值到另一個(gè)數(shù)組。它的實(shí)現(xiàn)很簡單:

關(guān)鍵字: memcpy C 語言 串化

初學(xué)C語言的時(shí)候,有一個(gè)小編程題我們應(yīng)該都記得,就是變量互換。

關(guān)鍵字: 變量互換 sizeof C 語言

我給大家出一道有意思的題目:如何快速得到一個(gè)字節(jié)的位逆序字節(jié)。比如0X33的位逆序字節(jié)是0XCC。

關(guān)鍵字: 字節(jié) C 語言 volatile

補(bǔ)碼是一個(gè)很基礎(chǔ)的概念,但是對于很多人來說,其實(shí)有些迷糊,這里對補(bǔ)碼進(jìn)行一些通俗而深刻的講解。

關(guān)鍵字: C 語言 補(bǔ)碼 CPU

另外,有時(shí)候優(yōu)先級還與C語言編譯器有關(guān),同一個(gè)表達(dá)式在不同的平臺上,可能表達(dá)的意義是不同的。所以,為了代碼的可植移性、正確性以及可讀性,振南強(qiáng)烈建議多用一些()。

關(guān)鍵字: C 語言 編程語言 賦值操作

我們本希望循環(huán)5次,然后結(jié)束,但是實(shí)際情況是陷入了死循環(huán)。這種錯(cuò)誤在實(shí)際開發(fā)中,還比較難發(fā)現(xiàn)。其原因在于i的類型,無符號整型是永遠(yuǎn)不小于0的。我們需要將i的類型改為有符號型。

關(guān)鍵字: 死循環(huán) C 語言 空循環(huán)

以上的例子可能有些雞肋,“一個(gè)if能搞定的事情,我為什么要用for?”,沒錯(cuò)。我們這里主要是為了解釋for循環(huán)的靈活用法。深入理解了它的本質(zhì),有助于我們在實(shí)際開發(fā)中讓工作事半功倍,以及看懂別人的代碼。

關(guān)鍵字: for循環(huán) C 語言
關(guān)閉