zoukankan      html  css  js  c++  java
  • 半精度浮点数取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('输入半精度浮点文件:
    ')
    	outfile = input('输出文件:
    ')
    	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)+'
    ')
    	print('Sucessfully!')
    	input('Press any key to Exit:
    ')
    

      

  • 相关阅读:
    第四章
    第三章随手笔记
    Android深度探索(卷1)HAL与驱动开发
    第十章心得体会
    第九章心得体会
    第八章心得体会
    第六章心得体会
    第七章心得体会
    第五章心得体会
    第四章心得体会
  • 原文地址:https://www.cnblogs.com/xqn2017/p/8021490.html
Copyright © 2011-2022 走看看