23.Labview中的数值类型讨论 ---- 位(bit)、字节(byte)、I8、U8、单双精度、复数

hello,大家好,本篇向大家介绍一个最常用但最容易让人忽略和最容易犯错的知识:数值。
“数值” 这个概念在Labview中被涉及的还是很多的,几乎任何一个程序都无可避免的会用到,但我相信大家绝大多数人对数值这个概念应用的并不深入也不透彻,甚至很多同学对什么是bit、什么是byte都不清楚,那么本章就以数值位切入口详细介绍一下数值这个概念。

数值这个概念大家都在熟悉不过了,加减乘除从上学就开始接触,它在Labview中的表现形式还是特别多的,包括了十二种数值:有I8、I16、I32、I64、U8、U16、U32、U64、SGL、DBL、EXT、CSG、CDB、CXT共14种

为了让大家了解的十分清晰,题主打算从最最最基础的内容讲起,即计算机基础知识中的位(Bit)和字节(Byte).

之前题主讲过一篇有关于数据类型的文章,大家想补充理论的话可以点击链接直接查看:

Labview接线颜色和数据类型及强制类型转换:
https://blog.csdn.net/m0_52176775/article/details/138847314

数值类型

  • 1. 比特与字节数
  • 2. 数据类型介绍
    • 2.1 浮点数(folat)
    • 2.2 整数(int)
    • 2.3 复数(complex)
  • 3. 数据类型的选用

1. 比特与字节数

为了让大家更清晰的了解这些概念,本节先带大家来深入的了解一下比特(Bit)和字节数(Byte) 的定义。

1.比特(Bit)的概念

比特(Bit)是信息的基本单位,它只有两个可能的值: 0 或 1。在数字电子和计算中,这些值通常用来表示二进制数。我们大家都清楚计算机的最小数据单元是基于二进制的,也就是说,我们通常所说的 “1位”或者“1比特” 就是指的是计算机中二进制数中的一个1或者0。
我们通常所说的Bit、比特、位都是同一个概念,即1比特=1Bit=1位。
下图可以很好的说明位与字节之间的关系,这是个固定关系,即:无论在任何场景中,1字节=8比特!
在这里插入图片描述
2.字节(Byte)的概念

字节(Byte)的概念,在我们上文了解了位的概念之后,这个就比较好理解了,字节(Byte) 是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。一个字节通常由8位(bit)二进制数组成,也有用其他位数构成的字节,如日本计算机汉字编码所用的JIS码就是用16位构成一个字节的,而1个汉字占用2个字节。
在这里插入图片描述
但在Labview中,我们只需了解,一个汉字占两个字节即可,这一点我们可以在程序中得到验证,如下图所示,字符串中有个函数名为 “字符串长度” ,这个函数实际返回的就是该字符串所占的字节数。也就是说,我们看到的每个汉字在电脑中实际是由64个1和0组成的。

在这里插入图片描述
3.位(Bit)与字节(Byte)的联系

位(Bit)与字节(Byte)之间的联系除上述1字节等于8位之外,最让我们熟知的就是计算机的位数,众所周知,计算机是有32位和64位两种,也就是说一个是4字节,一个是8字节,这个是什么意思呢?也就是说电脑处理数据的长度,32位的一次处理4个字节,而64位的一次可以处理8个字节。

2. 数据类型介绍

在Labview中,我们拿到一个数值的常量或者控件,在后面板右键 — 选择“表示法” ,即可选择该常量或者控件要表达的数据类型
下方是不同数据类型的后面板的控件图,每一个控件都代表了一个不同的数据类型,这种控件类型大家可以右键点击控件,单击“显示为图标”获得,大家可以仔细观察到,不同的数据类型的端口图标会有不同的外观,并且该控件的数值类型在控件的图标中有名称显示。
在这里插入图片描述
针对不同的数据类型,我们按照三种数据大类对数值进行介绍,分为**浮点数(float)、复数(int)、整数(complex)**三类来讲解。

2.1 浮点数(folat)

浮点数(float)在数据类型中是使用的最多的一种数值类型,这种数据类型可以表示任何一个数(小数、整数),其中浮点数在Labview的数据类型中包含了三种,分别是EXT、DBL、SGL三种,其中应用最广泛的为DBL浮点数,那么这三种数据类型如何理解呢?
说白了,就是带小数点的就是哦浮点数,浮点数就是带小数点的数。

当然浮点数的不同分类有不同的应用场景,那么有什么作用呢?
SGL(单精度浮点数): 可表示范围为最小正数1.40e-45,最大正数3.40e+38,最小负数-1.40e-45,最大负数-3.40e+38

DBL(双精度浮点数): 可表示范围为最小正数4.94e-324,最大正数1.79e+308,最小负数-4.94e-324,最大负数-1.79e+308

EXT(扩展精度浮点数): 可表示范围为最小正数6.48e-4966,最大正数1.19e+4932,最小负数-6.48e-4966,最大负数-1.19e+4932

那么除了表达范围不同之外,其字节上有什么区别呢?我们上文讲到字节和位数,那么从最深层次来看SGL是由下面结构组成的:
SGL使用32位(4个字节)来表示浮点数,遵循IEEE 754标准的单精度格式。这32位中,1位用于表示符号,8位用于表示指数,剩下的23位用于表示尾数(或称为有效数字)。
在这里插入图片描述
DBL则使用64位(8个字节)来表示浮点数,也是遵循IEEE 754标准,但为双精度格式。在64位中,1位用于表示符号,11位用于表示指数,剩下的52位用于表示尾数。
在这里插入图片描述

2.2 整数(int)

整数(int)在数据类型中是使用也特别多,它有两种:一种是有符号的(I),即可表示正负数;另一种是无符号的(U),即仅表示0和正整数。

1.有符号整型(I)

有符号整型(I)其中 I 表示Integer(整数的英文),I8表示的是8位有符号整数,I16表示的是16位的有符号整数,I32表示的是32位的有符号整数,位数越多,那么可表示的数据范围越大,大家仅需知道即可,无需背下来。其可表示的范围如下所示:
在这里插入图片描述
2.无符号整型(U)

无符号整型(U)同样,对U8,U表示Unsigned Integer(无符号整数的英文),8表示用8位二进制表示一个数,因为是正整数所以不表示正负号符号位,所以其表示的整数范围与I8不一样。如下图所示:
在这里插入图片描述
这里需要注意一点:
当使用的数字超过这个控件数据类型所表达的数据范围时,就会将这个数字强制转换位为离他最近的数字。

比如,我们想输入整数500,但是使用了U8类型控件后,我们输入500后,控件内的数值自动变为了255,着个大家自行尝试,题主这里就不在过多赘述。

2.3 复数(complex)

复数(complex)分为3种数据类型,分别为CSG、CDB和CXT。
其中,
CSG表示实部和虚部用SGL表示的复数,SG表示SGL。
CDB表示实部和虚部用DBL表示的复数,DB表示DBL。
CXT表示实部和虚部用EXT表示的复数,XT表示EXT。

以上实部虚部的数据类型我们上面提到了,相信大家都了解了。那么他们有如下特点:
精度: CXT > CDB > CSG。CXT提供了最高的数值精度,而CSG的精度最低。
计算效率: CSG > CDB > CXT。由于精度要求的不同,CSG在计算效率上通常最高,而CXT由于需要处理更高的精度,计算效率相对较低。

那么这么多类型我们该如何选用呢?
请看下文。

3. 数据类型的选用

相信大家通过上述描述,都知道自己不同情况下会使用什么数据类型了,那么选用的情况题主给大家提一些建议:
1.数值范围
整数类型(I8、I16、I32、I64、U8、U16、U32、U64),要确定你的数据是否可能超出某个类型的表示范围。例如,如果你知道你的数据永远不会超过255,那么U8就是合适的选择。
浮点数和复数类型同样需要考虑数值范围,但还需要考虑精度。
2.精度
浮点数和复数类型(SGL、DBL、EXT、CSG、CDB、CXT)中,如果你需要高精度的计算,那么应该选择精度更高的类型,如DBL、EXT、CDB或CXT。
3.内存使用
每种数据类型都占用不同数量的内存。例如,I8占用1字节,而I64占用8字节。在选择数据类型时,需要考虑你的内存限制,以及是否有必要为了节省内存而牺牲精度或范围
4.性能
使用更小的数据类型可能会提高性能,因为它们可以更快地加载到CPU中,浮点数的性能也可能受到精度的影响,因为高精度计算通常需要更多的CPU周期。

总结:

如果你知道你的整数数据永远不会超过某个范围(例如0-255),那么选择相应的无符号整数类型(如U8)。
对于需要高精度的浮点数计算,选择DBL或EXT。如果你需要处理复数,并且需要高精度,那么选择CDB或CXT。
如果你正在处理大量的数据,并且内存是一个限制因素,那么可能需要选择更小的数据类型来节省内存。但是,这可能会牺牲一些精度或范围。
在选择数据类型时,始终考虑你的具体需求和限制,以及你的代码的可读性和可维护性。

以上就是对大家使用时的建议,那么对于数值类型的讲解到此结束,如果大家对这方面的知识有疑问或者不理解的,可以随时评论和私聊,我会耐心帮大家解答这些问题。
那么今天的教学就到这里,希望大家好好消化

**如果这篇文章对大家有帮助的话,欢迎大家点赞收藏评论和加关注,更多精彩干货和文章,请点题主主页查看,那么本期到此结束,加油~祝大家越来越强!

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

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

相关文章

CentOS8安装opensips 3.5

环境:阿里云 操作系统CentOS8.5 依赖包安装: libmicrohttpd cd /usr/local/src wget https://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-latest.tar.gz tar vzxf libmicrohttpd-latest.tar.gz cd libmicrohttpd-1.0.1/./configure make make …

【CVPR_2024】:逐元素乘积为什么会产生如此令人满意的结果?

写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除! 文章目录 前言论文重写星形运算一层网络推广多层网络特殊情况 W 1 W_1 W1​和/或 W 2 W_2 W2​…

Python-3.12.0文档解读-内置函数sorted()详细说明+记忆策略+常用场景+巧妙用法+综合技巧

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 Python-3.12.0文档解读详细说明 功能描述 参数说明 用法示例 备注 进阶用法 参考…

集合操作进阶:关于移除列表元素的那点事

介绍 日常开发中,难免会对集合中的元素进行移除操作,如果对这方面不熟悉的话,就可能遇到 ConcurrentModificationException,那么,如何优雅地进行元素删除?以及其它方式为什么不行? 数据初始化…

力扣--双指针15.三数之和

详细思路 排序数组:首先对数组 nums 进行排序,目的是为了方便后续使用双指针查找和避免重复结果。遍历数组:使用一个 for 循环从头遍历到倒数第三个元素。i 表示当前固定的元素。 跳过重复元素:如果当前元素 nums[i] 与前一个元素…

使用matplotlib绘制折线条形复合图

使用matplotlib绘制折线条形复合图 介绍效果代码 介绍 在数据可视化中,复合图形是一种非常有用的工具,可以同时显示多种数据类型的关系。在本篇博客中,我们将探讨如何使用 matplotlib 库来绘制包含折线图和条形图的复合图。 效果 代码 imp…

登录安全分析报告:小米官网注册

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞 …

【算法】模拟算法——数青蛙(medium)

题解:模拟算法——数青蛙(medium) 目录 1.题目2.题解3.参考代码4.总结 1.题目 题目链接:LINK 2.题解 用循环进行遍历, 如果该字符为o\o\a\k 找一下前驱字符是否存在 如果存在,前驱字符–,该字符如果不存在&#x…

STM32_IIC

1、IIC简介 I2C,即Inter IC Bus。是由Philips公司开发的一种串行通用数据总线,主要用于近距离、低速的芯片之间的通信;有两根通信线:SCL(Serial Clock)用于通信双方时钟的同步、SDA(Serial Data…

echarts渐变色与css渐变色互转(两个坐标点转角度)

前言 用于 echarts 的小伙伴都知道,他使用的渐变色写法和 css 的写法不一样。css 中直接使用角度定义渐变的方向,而 echarts 使用的是两个坐标点来进行标识方向(线性渐变)。 本文主要针对线性渐变的转换 那怎么在 css 中使用 e…

BrainGPT1,一个帮你b站点歌放视频的多模态多轮对话模型

BrainGPT1,一个帮你b站点歌放视频的多模态多轮对话模型 返回论文目录 项目地址 模型地址 作者:华东师范大学,计算机科学与技术学院,智能教育研究院的小怪兽会微笑。 介绍 BrainGPT1是一个工具调用多轮对话模型,与G…

[机器学习]GPT LoRA 大模型微调,生成猫耳娘

往期热门专栏回顾 专栏描述Java项目实战介绍Java组件安装、使用;手写框架等Aws服务器实战Aws Linux服务器上操作nginx、git、JDK、VueJava微服务实战Java 微服务实战,Spring Cloud Netflix套件、Spring Cloud Alibaba套件、Seata、gateway、shadingjdbc…

BU01板卡引脚

概述 BU01 是一款高速采集卡,主要用于高带宽数据采集及传输,应用领域多为数据中 心及数据采集领域。 端口提供60Gbps 传输带宽,可兼容2 个SFP万兆网口,和1 个40GE QSFP 光 口。和主机通信采用的是PCIE 2.0 x8 模式,最…

C++哈希的应用:位图 布隆过滤器 哈希切割

目录 位图 bitset 构造空间 将某个位变为0 将某个位变为1 检查是否存在 完整代码 拓展问题一 ​编辑 拓展问题二 布隆过滤器 判断是否存在 使用场景 哈希切割 拓展问题一 拓展问题二 位图 问题:有四十个亿未排序的不重复的无符号整数,此…

算法导论 总结索引 | 第三部分 第十四章:数据结构的扩张

1、通过存储 额外信息的方法来扩张一 种标准的数据结构,然后对这种数据结构,编写新的操作来支持所需的应用。因为添加的信息 必须要能被该数据结构上的常规操作更新和维护 2、通过扩张红黑树构造出的两种数据结构:14.1介绍 一种支持一般动态…

对boot项目拆分成cloud项目的笔记

引言:这里我用的是新版本的技术栈 spring-boot-starter-parent >3.2.5 mybatis-spring-boot-starter >3.0.3 mybatis-plus-boot-starter >3.5.5 spring-cloud-dependencies …

给Docker一个辈分(备份),免得无后...

定期备份所有 Docker 镜像 Linux 脚本 创建一个名为 backup_all_docker_images.sh 的脚本文件,内容如下: #!/bin/bash# 定义变量 BACKUP_DIR"/backup/docker" TIMESTAMP$(date "%Y%m%d%H%M") BACKUP_FILE"${BACKUP_DIR}/doc…

vx小程序初学

小程序初学 在我还没接触到微信小程序之前,通常使用轮播要么手写或使用swiper插件去实现,当我接触到微信小程序之后,我看到了微信小程序的强大之处,让我为大家介绍一下吧! swiper与swiper-item一起使用可以做轮播图 …

Facebook开户 | Facebook二不限户

Facebook二不限户的正确使用方法 Facebook 二不限是指 Facebook 国内二不限户,是通过代理开出来的一种特殊账户,️需要广告主准备主页。 其特点是:限主页、不限域名、额度没解限,解限后则不限额度。 相比于三不限户,…

Keras 3.0强势回归,助力深度学习

大家好,Keras的简洁代码风格一直受到开发者的青睐,自从Keras宣布支持Pytorch和Jax后,开发者们迎来了新的选择。 本文将介绍Keras 3.0的实用技巧,以一个典型的编码器-解码器循环神经网络为例,展示如何利用子类化API构建…