半精度浮點數取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')


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章