半精度浮點數到單精度的python 實現

2021-10-08 10:38:18 字數 724 閱讀 7569

實現原理可參考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.把小數點移動的位數,左移為正,右移為負,...