关于matlab的单精度与双精度
在matlab中有這么兩個函數
hex2num(str),將16進制字符串str(默認雙精度)轉換成一個數(如果加一個類型轉換可以轉換為單精度hex2num(single(str))
num2hex(num),將一個雙精度的數num(默認)裝換成16進制字符串(當然也可以強制轉換num2hex(single(num))?? )
注意,我上面所提到的16進制數,并非其邏輯上的16進制,而是其機器上的2進制數對應的16進制
?
比如
一個10進制(邏輯上)數3.5 對應的16進制(邏輯上)數為3.8
matlab里面的dec2hex() 和 hex2dec都是邏輯上的轉換? // 當然如果你這樣輸入 dec2hex(3.5) 會出錯,因為這個函數只是針對整數
?
一個單精度精度數和一個雙精度數在matlab里面是這樣存儲的
先將浮點數3.5轉換成其邏輯上的2進制,比如3.5對應的2進制為11.1,然后寫成科學計數1.11*2^1
?
容易知道,寫成科學計數法之后第一位一定是1,所以這一位不用管,只記錄其尾數(1.11)11,
其指數是1,符號是正號(0)
?
單精度的格式
X /XXXX XXXX / XXXX XXXX XXXX XXXX XXXX XXX
第一部分為符號為,即正為0,負數為1
第二部分為指數為,表示-127~128,而其范圍為0~255,所以實際存儲是實際指數+127,即1+127=128? 1000 0000
第三部分是尾數,即11
?
所以3.5在計算機中就是表示為0100 0000 1100 0000 0000 0000 0000 0000,數一數應該是32位,單精度就是32位
所以其對應的16進制就是
40600000
可以到matlab里面驗證一下
>>num2hex(single(3.5))
?
?雙精度的格式
X/XXX XXXX XXXX /XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
其余與單精度一樣
?
總結
以上是生活随笔為你收集整理的关于matlab的单精度与双精度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有关c++中const用法
- 下一篇: matlab中的square函数