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。
③如果你正在处理大量的数据,并且内存是一个限制因素,那么可能需要选择更小的数据类型来节省内存。但是,这可能会牺牲一些精度或范围。
④在选择数据类型时,始终考虑你的具体需求和限制,以及你的代码的可读性和可维护性。
以上就是对大家使用时的建议,那么对于数值类型的讲解到此结束,如果大家对这方面的知识有疑问或者不理解的,可以随时评论和私聊,我会耐心帮大家解答这些问题。
那么今天的教学就到这里,希望大家好好消化
**如果这篇文章对大家有帮助的话,欢迎大家点赞收藏评论和加关注,更多精彩干货和文章,请点题主主页查看,那么本期到此结束,加油~祝大家越来越强!