浮點小數 機械人無損收發小數的原理

2021-10-14 16:15:17 字數 1577 閱讀 3117

工作中,經常需要在裝置間互發資料。其中浮點數是最重要、使用最多的資料型別。

在使用機械人與其他裝置通過匯流排通訊收發資料的時候遇到了尷尬,機械人不能收發小數。一般的做法是將資料放大傳送,然後接收方再縮小還原。捨棄後面不重要的數字完成通訊,這是工程師的智慧型。

不止機械人,還有許多諸如軸控卡之類的裝置不能收發小數。這是不是真的呢?小數的收發有什麼困難,讓這些智慧型製造的明星裝置趴窩?

首先需要了解一下什麼是浮點數?

浮點數是計算機中小數的一種表示方法,浮點就是浮動小數點的意思。分為單精度浮點數和雙精度浮點數,這裡以下說到的都是單精度浮點數。

單精度浮點數占用4個位元,也就是32bits。當前用到的浮點數是依據標準ieee 754-2008編碼的。

第1位(d31,sign)表示正負,0表示正,1表示負。

中間8位(d30-d23,exponet)表示指數。

四位元組浮點數的資料傳送順序為先低位元組後高位元組,分為8個ascii碼傳送。

很顯然,聯網的任何裝置都具備傳送ascii碼的能力,機械人不能收發浮點數是假的。不是硬體問題,那麼就是軟體問題。機械人可能認識收到的ascii碼。

怎麼把小數變成二進位製碼?

本來想用520.1314這個數字做個計算,但是它用浮點數表示是520.13140869140625,這個有點難...

這是轉換公式,轉換的目標是10.25。

先把10.25轉換為二進位制表示:1010.01 。

小數轉換為二進位制,整數部分和小數部分要分別轉換。整數部分轉換的口訣是「除2取餘,逆序排列」,小數部分的轉換口訣是「乘2取整,順序排列」。

1010.01規格化之後是1.01001×2^3 。

根據上面的公式計算:

​把以上的內容合併到一起就是10.25的編碼:0 10000010 0100 1000 0000 0000 0000 000

可以去驗證一下。

二進位製碼到浮點數的轉換就是上面的逆過程

1 10000011 100 1001 0000 0000 0000 0000

符號位s=1,階碼e=10000011,尾碼=100 1001 0000 0000 0000 0000 。

帶入公式計算,上述結果為-25.125 。

用這種方式不用約定放大縮小的倍數,所以是無損。作為資料傳送並沒有比x1000的方式有優勢,對程式標準化的意義更大一些,除錯工作量略有下降。

用krl寫了乙個二進位制編碼到實數的轉換程式。能完成按標準的轉換,週末在家,沒有測試接收plc傳送的資料。既然有標準存在,大概率是可以用的。

好色機械人的豔遇 機械人豔遇 《機械人的旅行》

講述機械人 路遇開房車的 剛剛開始的時候畫風很舒服,直到到了晚上上了她的床之後。畫風速變了!這個女主角聲音超好聽。整個情節實在太流氓了,太猥瑣了!連六六君這樣的老司機都看不下去了!正片在三分五十,不謝 很抱歉,此內容已經失效了!就連六六君也無法恢復了。請欣賞其他有效的內容 當您看到這條資訊的時候,很...

2017 04 19 特種機械人 獵豹機械人介紹

仿生機械人 獵豹機械人 說起機械人,可能由於受名詞中 人 字的影響,大部分人腦海裡出現的可能要麼是憨態可掬 動作靈活的小nao機械人,要麼是彬彬有禮 動作規範的asimo機械人,亦或是電影 人工智慧 裡有著和人一模一樣的外表的大衛。其實,這些機械人都屬於仿人機械人,這些機械人是模仿人的形態和行為而被...

dods 機械人 勝利之日機械人補丁

補丁介紹 遊戲評測 dod最大的魅力就在於隊友之間的密切配合 服從戰鬥指揮,就象一場真正的戰爭一樣,不服從命令的軍隊是必敗無疑的。在現實戰爭的戰略戰術也常常運用其中,畢竟它的真實在於反應了一場現實中的戰爭。dod中更注重團隊力量的相互配合!dod中的進攻和防守都是相對而言的,無論你的 法有多麼好,衝...