float去掉小数点之后_float类型的存储方式
在c語言中float函數(shù)是單精度的。它在內(nèi)存中以二進(jìn)制的形式存儲(chǔ)。分為符號(hào)位,階碼與尾數(shù)三部分。
符號(hào)位最為簡(jiǎn)單,如果你存儲(chǔ)的是正數(shù)那么符號(hào)數(shù)就是0。如果是負(fù)數(shù),則為1。
下面,我以13.625為例說明階碼與尾數(shù)的表示方法。首先,我們?nèi)〕?3.625的整數(shù)部為13。對(duì)其使用短除法(對(duì)該數(shù)除以2,直至不能再除的一種方法)結(jié)果如下
將各余數(shù)自下而上排列,則得到了13的二進(jìn)制表示。之后,取出13.625的小數(shù)部分為0.625對(duì)其每次乘2取出整數(shù)留下小數(shù),直至得到1。結(jié)果如下
自上而下將取出的整數(shù)排列好,即得0.101。
這樣我們就得到了13.625的二進(jìn)制表示。為1101.101。之后我們需將小數(shù)點(diǎn)移動(dòng)至整數(shù)部只有一位。移動(dòng)后得到1.101101。在此我們將小數(shù)點(diǎn)移動(dòng)了三位。因而三即是該數(shù)的指數(shù)。而階碼則為指數(shù)+127(加127是C語言的內(nèi)在邏輯,在此我們并不深究。)因而我們得到了13.625的階碼,為130。二進(jìn)制表示10000010。
至于最后的尾數(shù),將原先得到的1.101101去掉整數(shù)部分后在后面補(bǔ)齊17個(gè)0即可。(float類型的尾數(shù)有23位,若不夠,在后補(bǔ)齊0即可。)
最后我們得到了13.625的存儲(chǔ)數(shù)據(jù)
總結(jié)
以上是生活随笔為你收集整理的float去掉小数点之后_float类型的存储方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php表单中姓名必须使用汉字,我想在表单
- 下一篇: python访问数据库如何解决高并发_使