現場的儀表,比如積算儀、巡檢儀、無線鋼水測溫儀、無線稱重校驗儀,送出來的數據,有的是定點數,有的浮點數。作為PLC或二次儀表、顯示大屏幕,都需要查詢它們的瞬時值并顯示出來。
以二次數顯表為例,接收的它們的數據后,需要轉換成BCD數進行顯示。定點數的接收與轉換比較簡單,浮點數由于是由階碼確定小數點的位置,所以在轉換過程中,稍微的增加了點難度。
浮點數共4字節,32位
例如124.75,浮點數為42F98000H
|
4
|
2
|
F
|
9
|
8
|
0
|
0
|
0
|
0100
|
0010
|
1111
|
1001
|
1000
|
0000
|
0000
|
0000
|
字節3
|
字節2
|
字節1
|
字節0
|
|
|
|
|
|
|
|
|
字節3的第7位表示符號,1表示負數,0表示正數
4個字節都左移一位
例如124.75,浮點數為42F98000H
|
4
|
2
|
F
|
9
|
8
|
0
|
0
|
0
|
0100
|
0010
|
1111
|
1001
|
1000
|
0000
|
0000
|
0000
|
字節3
|
字節2
|
字節1
|
字節0
|
1000
|
0101
|
1111
|
0011
|
0000
|
0000
|
0000
|
000X
|
移位后此字節為階碼
|
這些是尾數
|
階碼-127=小數點移動的位數,85H=133,133-127=+6,正數表示小數點右移,負數表示小數點左移。
尾數前面隱藏了一個1. 補齊后如下
字節3
|
字節2
|
字節1
|
字節0
|
|
1.
|
1111
|
0011
|
0000
|
0000
|
0000
|
000X
|
注意小數點
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
小數點右移6位后如下
字節3
|
字節2
|
字節1
|
字節0
|
|
1
|
1111
|
00.11
|
0000
|
0000
|
0000
|
000X
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
現在把四個字節都左移,使得整數字節和小數字節分開,如下
字節3
|
字節2
|
字節1
|
字節0
|
111
|
1100
|
1100
|
0000
|
0000
|
0000
|
0XXX
|
|
整數字節
|
小數字節
|
|
|
|
|
|
|
|
|
整數轉換為十進制,7CH=124
小數字節高位定義為第1位,以后為2 3 4 5 6.。。。。。。第1位=2^(-1),第2位=2^(-2),第3位=2^(-2),第n位=2^(-n)