IEEE 754有一個半精度的浮點數,叫Half-precision floating-point format
通訊的時候數值的部分常會用到,因為他是最小的浮點數,好用
我有一個專案有用到這個
https://github.com/x448/float16
不錯用,推推
要做確認的時候還是會需要計算一下,查到這個網站
https://oletus.github.io/float16-simulator.js/
好用推推
其中預設的數值(1bit的sign + 5bit的exponent + 10bit的mantissa)就是IEEE 754的標準
這裡有篇paper在講float32跟float16的雙向轉換,提供了一般的演算法跟使用查表的演算法
好文章推推
以下我把一般的演算法複製過來:
f = ((h&0x8000)<<16) | (((h&0x7c00)+0x1C000)<<13) | ((h&0x03FF)<<13)
h = ((f>>16)&0x8000)|((((f&0x7f800000)-0x38000000)>>13)&0x7c00)|((f>>13)&0x03ff)
有時候我們會需要查看一個檔案(尤其是binary檔案的時候)的各個byte到底寫了什麼,這時後就可以用od這個指令來把檔案一個一個byte地顯示出來 最常用的指令(今天就只記錄這招XD) od -c filename.bmp >> od.txt 上面是將一個bmp檔案經過od的解析後,將結果寫進od.txt中。寫進txt檔是因為通常這個output會很大,如果terminal不允許顯示這麼長的output的話,會無法一次看完全部。 參數c在man page的解釋是"select printable characters or backslash escapes",已經講解得很清楚了,如果是ASCII的話會顯示字元或是帶有反斜線的跳脫字元,但一個byte換成十進位的話可以代表0到255,而ASCII只用了0到127而已,所以剩下的無法部分,od會將它轉換成八進位的三位數,例如212代表的就是2x8^2+1x8+2=138,也就是十進位的138,又例如012代表的就是十進位的10。所以我們可以知道這邊這個三位數最多只到377,也就是十進位的255 而od.txt每一行的左邊會有該行的行數,更正確的說是該行的offset,也就是該行在這份檔案中,它的前面有幾個byte的意思。而他的單位是八進位的數字,例如0000040代表的就是這一行的前面有4x8=32個byte。
Sep 6, 2020其實一直不想做RecyclerView的筆記,因為網路上資源太多了,但每次要用的時候都還要花個幾分鐘回憶一下這東西到底在幹嘛,實在是浪費時間,所以這篇從程市結構上簡單講一下,讓下次要用到RecyclerView的時候可以快速恢復記憶。 程式結構 以下重點式地說一下哪些地方要寫東西: Activity/Fragment的class attribute要新增 一個RecyclerView: 用來接收recyclerview的UI widget,並用它來設定好recyclerview背後的程式邏輯。
Sep 5, 2020先來講一點廢話,講一下為啥我會開始用ViewModel。 以前我寫single activity application還沒有用navigation的時候,都是自己寫個listener的interface用observer pattern來實現activity和fragment的溝通。我記得這其實是原本官方建議的方式,但我現在找不到了,記得好像蠻硬性地規定要有個callback method叫做onFragmentInteraction(uri: Uri)來做activity跟fragment的溝通。observer pattern的方式我用了很久,直到後來因為覺得各個fragment之間的轉換用寫的實在是有點亂,就用了navigation,沒想到一試成主顧,真的太好用而且很簡單(我就不特別筆記navigation了因為官方教學十分清楚,照著做就好),但用了navigation後,整個MainActivity的程式架構變了很多,也讓我重新思考activity、fragment和service之間到底要怎麼溝通比較好,於是讓我有這個機會試著用用看ViewModel和LiveData。然而它們就跟navigation一樣,太好用又太簡單了,用完之後回不去了。 所以這篇筆記所寫的可能跟一般大家常用ViewModel和LiveData的理由不同,一般是拿來存取UI元件的資料用的,而我這邊想講一下怎麼用ViewModel和LiveData來取代Observer pattern來做activity和fragment之間(fragment和fragment之間也可以)的溝通,而且相較之下是一個更好用更簡單的方案。 基本介紹 ViewModel ViewModel是一個用來把資料跟activity、fragment等view類型的元件分離的東西,而且它的lifecycle比activit和fragment的還要長,是一個很適合放資料的地方。它的存在跟一個叫做MVVM的design pattern有很大的關係。主要就是view跟model之間,有了這個viewmodel來讓資料的取得與更新有一個獨立的地方來專門處理。
Aug 20, 2020App除了使用者看得到可互動的foreground部分之外,很多時候會用到background的運算,例如Google drive透過網路進行檔案的上傳下載、Line的即時訊息等等都是要在背景執行或是待命的。這篇會基本地介紹一下background processing的部分有哪些常用機制可以用,然後主要介紹其中兩個,第一個不外乎就是App四大component之一的Service,另一個是API 28出現的WorkManager。 官方建議的background processing方案 其實官方有文章來講解這個部分,這邊簡單重點整理一下,詳細內容可以去看官方的文章。 官方把背景的工作分成三種 Immediate Deferred Exact
Aug 10, 2020or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up