現場的儀表,比如積算儀、巡檢儀、無線鋼水測溫儀、無線稱重校驗儀,送出來的數據,有的是定點數,有的浮點數。作為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)