半精度浮點數取5bit指數位


半精度浮點是指用16bit表示一個浮點數,最高1bit為符號位,中間5bit為指數a,低10bit為尾數b

Value = (符號位)(1+b/1024)*(2^(a-16))

程序很簡單,用pyinstaller -F getExp.py壓縮成getExp.exe(見另一篇博客py文件打包成exe)可以用

由於只取指數位,程序簡單處理了符號位和尾數位

#coding = utf-8

if __name__ == '__main__':
	file = input('輸入半精度浮點文件:\n')
	outfile = input('輸出文件:\n')
	inputdata = []
	with open(file, 'r') as f:
		for line in f.readlines():
			item = line[2:] #這里假設輸入數據是帶有0x的16進制數如0x412F,所以要從0x后開始取
			data = hex(eval(line)) #獲取16進制數
			dataout = bin(int(data, 16)) #轉為二進制數
			temp = int(dataout[2:], 2) #轉為的二進制數是0b..需要從第三位開始取,然后將二進制轉為十進制
			exp = temp >> 10 #取十進制數的前6bit
			if exp > 31: #如果符號位是1的話
				inputdata.append(exp-32)
			else: #符號位為0
				inputdata.append(exp)
				
	with open(outfile, 'w+') as f_w:
		for item in inputdata:
			f_w.write(str(item)+'\n')
	print('Sucessfully!')
	input('Press any key to Exit:\n')

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM