16bit半精度浮点加乘法(用于结果验证)-图形测试小程序(python)

在这里插入图片描述
测试:
在这里插入图片描述
代码如下:

import tkinter as tk
import struct
from tkinter import Entry, Button, Label

def float_to_binary_16(value):
    # 将浮点数转换为16位二进制表示
    binary_representation = struct.pack('!e', value)
    binary_string = ''.join(f'{byte:08b}' for byte in binary_representation)
    return binary_string[:16]

def binary_to_float_16(binary_string):
    # 将16位二进制表示转换为浮点数
    if len(binary_string) != 16:
        raise ValueError("Binary string must be 16 bits long")

    byte_values = [int(binary_string[i:i + 8], 2) for i in range(0, 16, 8)]
    binary_representation = struct.pack('!BB', *byte_values)
    float_value = struct.unpack('!e', binary_representation)[0]
    return float_value

def float16_addition(bin_str_a, bin_str_b):
    # 将二进制字符串转换为浮点数
    float_a = binary_to_float_16(bin_str_a)
    float_b = binary_to_float_16(bin_str_b)

    # 执行浮点加法
    result = float_a + float_b

    # 将结果转换为16位二进制字符串
    result_bin_str = float_to_binary_16(result)

    return result_bin_str

def float16_multiplication(bin_str_a, bin_str_b):
    # 将二进制字符串转换为浮点数
    float_a = binary_to_float_16(bin_str_a)
    float_b = binary_to_float_16(bin_str_b)

    # 执行浮点乘法
    result = float_a * float_b

    # 将结果转换为16位二进制字符串
    result_bin_str = float_to_binary_16(result)

    return result_bin_str

def calculate():
    original_a = float(entry_a.get())
    original_b = float(entry_b.get())

    binary_a = float_to_binary_16(original_a)
    binary_b = float_to_binary_16(original_b)

    # 浮点加法
    addition_result = float16_addition(binary_a, binary_b)
    add_result = binary_to_float_16(addition_result)
    label_add_result.config(text=f"Add: {add_result, addition_result}")

    # 浮点乘法
    multiplication_result = float16_multiplication(binary_a, binary_b)
    mul_result = binary_to_float_16(multiplication_result)
    label_mul_result.config(text=f"Mul: {mul_result, multiplication_result}")

# 创建Tkinter窗口
window = tk.Tk()
window.title("16位浮点数运算")

# 创建输入框和标签
label_a = Label(window, text="输入A:")
entry_a = Entry(window)
label_b = Label(window, text="输入B:")
entry_b = Entry(window)

# 创建按钮
calculate_button = Button(window, text="计算", command=calculate)

# 创建结果标签
label_add_result = Label(window, text="Add: ")
label_mul_result = Label(window, text="Mul: ")

# 布局界面
label_a.grid(row=0, column=0)
entry_a.grid(row=0, column=1)
label_b.grid(row=1, column=0)
entry_b.grid(row=1, column=1)
calculate_button.grid(row=2, column=0, columnspan=2)
label_add_result.grid(row=3, column=0, columnspan=2)
label_mul_result.grid(row=4, column=0, columnspan=2)

# 运行Tkinter主循环
window.mainloop()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/330662.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu20.4 Mono C# gtk 编程习练笔记(二)

界面设计习练后,下面写一些程序设计心得。 程序结构 先看一下程序总体结构,先在program.cs中找到main入口,在命名空间下是MainClass类,Main函数进入后首先建立应用程序环境 Application.Init,然后对MainWindow进行实…

css实现动态水波纹效果

效果如下: 外层容器 (shop_wrap): 设置外边距 (padding) 提供一些间距和边距 圆形容器 (TheCircle): 使用相对定位 (position: relative),宽度和高度均为 180px,形成一个圆形按钮圆角半径 (border-radius) 设置为 50%&…

【性能调优】local模式下flink处理离线任务能力分析

文章目录 一. flink的内存管理1.Jobmanager的内存模型2.TaskManager的内存模型2.1. 模型说明2.2. 通讯、数据传输方面2.3. 框架、任务堆外内存2.4. 托管内存 3.任务分析 二. 单个节点的带宽瓶颈1. 带宽相关理论2. 使用speedtest-cli 测试带宽3. 任务分析3. 其他工具使用介绍 本…

生物识别规划人脸识别芯片方案的概述和特点

方案概述 人脸识别方案采用高性能AI芯片,支持RGB和IR摄像头, 支持LCD显示屏。 方案特点 • 普通RGB摄像头和IR摄像头同时参与3D成像RGB摄像头 支持屏幕回显 • 双目摄像头得到特征点视差计算人脸相 对3D深度信息, 同时利用可见光和红外 光谱信…

达梦数据库入门语法:从基础到进阶的指南

目录 博客前言: 达梦数据库语法介绍 一.创建表空间 1.图形化创建 2.语法创建 ​编辑​编辑 3.修改表空间参数 图形化修改 ​编辑​编辑 语法修改 4.设置加密算法、密码 二.创建用户 1.图形化 2.sql执行 ​编辑 3.授予权限 授予用户 DBA 权限 授予用户…

运算符和表达式

表达式 表达式是由运算符、运算量和标点符号组成的有效序列,其目的是用来说明一个计算过程,表达式可以独立成句,一般形式为: 表达式; 运算符 运算符可以按照功能分为:算术运算符、赋值运算符、关系运算…

【 文本到上下文 #4】NLP 与 ML

一、说明 欢迎回到我们的 NLP 博客系列!当我们进入第四部分时,焦点转移到机器学习 (ML) 和自然语言处理 (NLP) 之间的动态相互作用上。在本章中,我们将深入探讨 ML 和 NLP 的迷人协同作用&#…

PLSQL 把多个字段转为json格式

PLSQL 把多个字段转为json格式 sql Select cc.bm, cc.xm, json_arrayagg(cc.hb) jgFrom (Select aa.bm, aa.xm, json_object(aa.ksbh, aa.wjmc) hbFrom (Select 001 bm, 老六 xm, 0001 ksbh, 文具盒 wjmcFrom dual tUnion AllSelect 001 bm, 老六 xm, 0002 ksbh, 毛笔 wjmcFr…

LabVIEW精确测量产品中按键力和行程

项目背景 传统的按键测试方法涉及手工操作,导致不一致和效率低下。在汽车行业中,带有实体按键的控制面板非常常见,确保一致的按键质量至关重要。制造商经常在这些组件的大规模、准确测试中遇到困难。显然,需要一个更自动化、精确…

Modbus协议学习第三篇之协议通信规则

导语 本篇博客将深入介绍Modbus协议的一些内容,主要包括通讯方式和通讯模型的介绍 Modbus通讯方式 Modbus协议是单主机、多从机的通信协议,即同一时间,总线上只能有一个主设备,但可以有一个或者多个从设备(最多好像是2…

基于springboot+vue的校园管理系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

贵阳贵安推进“数字活市”战略成效明显

作者:黄玉叶 近年来,贵阳贵安将数字经济确立为高质量发展的主路径之一,把推进“数字活市”作为实施主战略、实现主定位,特别是建设“数字经济发展创新区核心区”的重要抓手,从改革、发展、民生三个维度纵深推进“数字活…

未来的NAS:连接您的数字生活

未来的NAS:连接您的数字生活 引言 网络附加存储(Network Attached Storage,简称NAS)是一种通过网络连接的存储设备,用于集中存储和共享数据。传统的NAS设备通常包含一个或多个硬盘驱动器,可以通过局域网连…

数据结构和算法的部分例题(力扣)

1.数组 1.1 合并一个数组的两个有序区间 public class MargTwo {public static void main(String[] args) {int[] arr1{1,5,6,2,4,10,11};int[] arr2new int[arr1.length];marg2(arr1,0,2,3,6,arr2);}private static void marg2(int[]arr1,int iStar,int iEnd,int jStar,int j…

【机组】通用寄存器单元实验的解密与实战

​🌈个人主页:Sarapines Programmer🔥 系列专栏:《机组 | 模块单元实验》⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 ​ 目录 🌺一、 实验目…

广和通AI解决方案“智”赋室外机器人迈向新天地!

大模型趋势下,行业机器人将具备更完善的交互与自主能力,逐步迈向AI 2.0时代,成为人工智能技术全面爆发的重要基础。随着行业智能化,更多机器人应用将从“室内”走向“室外”,承担更多高风险、高智能工作。复杂的室外环…

阿里云国外服务器价格表

阿里云国外服务器优惠活动「全球云服务器精选特惠」,国外服务器租用价格24元一个月起,免备案适合搭建网站,部署独立站等业务场景,阿里云服务器网aliyunfuwuqi.com分享阿里云国外服务器优惠活动: 全球云服务器精选特惠…

Linux网络引导自动安装centos7

目录 一、部署PXE远程安装服务 1. 系统装机的三种引导方式 2. pxe概述 3. 实现过程 4. 搭建过程中服务介绍 4.1 TFTP服务 4.2 vsftp:安装系统镜像文件获取方式 4.3 syslinux 4.4 DHCP服务 5. 操作过程 二、实现Kickstart无人值守安装 1. 安装Kickstart图…

Codeforce s Round 920 (Div. 3) G题 旋转矩阵,斜缀和,平移

Problem - G - Codeforces 目录 题意: 思路: 总思路: 旋转矩阵: 前缀和预处理: 平移的处理,尤其是越界的处理: 核心代码: 题意: 给你个n*m的矩阵,里…

【论文解读】用于代码处理的语言模型综述

目录 1.简要介绍 2.代码处理的语言模型的评估 3.通用语言模型 4.用于代码处理的特定语言模型 5.语言模型的代码特性 6.软件开发中的LLM 7.结论与挑战 ​​​​​​​1.简要介绍 在这项工作中,论文系统地回顾了在代码处理方面的最新进展,包括50个模…