實現原理可參考3.參考文獻部分。
**輸入引數s是字串形式的16位二進數,如"0011010101010101"。
def
halfpre2spre
(s):
#s代表16位二進數,
sign=
int(s[0]
) res0=
pow(-1
,sign)
#符號位
exp=
int(
'0b'
+s[1:6
],2)
# 指數字
endpre=s[6:
]#尾部10位精度位
res2=
0.0for j in
range(10
):res2+=
int(endpre[j])*
pow(2,
-(j+1)
) res=res0*
pow(
2,exp-15)
*(1+res2)
return res
當s=
"0011010101010101",
halfpre2spre(s)
out:
0.333251953125
1.2.
單精度浮點數(IEEE754)
單精度浮點數佔據4個位元組,4個位元組的分配如下 a 第一位為符號位,0表示正,1表示負 b 第2 9位為階碼,採用移碼表示 c 第10 32位為尾數,採用原碼表示。1 給定32位串,如何轉換成十進位制數 假設記憶體中存在32位串 cd cc 08 41。因為intel cpu採用little en...
單精度浮點數的取值,表示以及相關
可以表示的範圍為 3.40282 10 38 1.1111 1 2 127 即 0 11111110 11111111111111111111111 23個1 單精度浮點數可以表示1.175 10 38 1.00 0 2 126 的資料而不損失精度。0 00000001 00000000000000...
單精度浮點數在記憶體中的儲存
float 在記憶體中長度是32 double在記憶體中長度是64位 64位編譯器 總結實數轉二進位制float的方法 a.分別將實數的整數和小數轉換為二進位制 b.左移或者右移小數點到第乙個有效數字之後 c.從小數點後第一位開始數出23位填充到尾數部分 d.把小數點移動的位數,左移為正,右移為負,...