单片机浮点数范围(微机浮点数表示)

海潮机械 2022-12-16 17:23 编辑:admin 293阅读

1. 微机浮点数表示

运算速度快

一台普通微机一秒中内的计算量,可能是一个人一辈子也无法完成的。而计算机的运算速度,随着计算机技术的高速发展,还在以惊人的速度加快。

运算速度主要用以衡量计算机运算的快慢程度。运算速度与许多因素有关,如机器的主频、执行什么样的操作、主存本身的速度(主存速度快,取指、取数就快)等等。

频率,是指CPU的主频,主频也叫时钟频率,单位是MHz,用来表示CPU的运算速度。(Million Instruction Per Second)作为计量单位,即每秒执行百万条指令。

CPU的主频=外频×倍频系数。很多人以为认为CPU的主频指的是CPU运行的速度,实际上这个认识是很片面的。CPU的主频表示在CPU内数字脉冲信号震荡的速度,与CPU实际的运算能力是没有直接关系的。

当然,主频和实际的运算速度是有关的,但是目前还没有一个确定的公式能够实现两者之间的数值关系,而且CPU的运算速度还要看CPU的流水线的各方面的性能指标。由于主频并不直接代表运算速度,所以在一定情况下,很可能会出现主频较高的CPU实际运算速度较低的现象。因此主频仅仅是CPU性能表现的一个方面,而不代表CPU的整体性能。

主要参数

型号 Core 2 Duo E6300

(Intel酷睿2双核E6300)

适用类型 台式机

接口类型 LGA 775

(目前CPU都采用针脚式接口与主板相连,而不同的接口的CPU在针脚数上各不相同。CPU接口类型的命名,习惯用针脚数来表示)

核心类型 Allendale

生产工艺 0.065um

核心电压 1.2V

(CPU正常工作所需的电压)

主频 1.86GHz (CPU内核工作的时钟频率(CPU Clock Speed)。通常所说的某某CPU是多少兆赫的,而这个多少兆赫就是“CPU的主频”)

外频 外频 266MHz

倍频 7X

一级缓存 L1 64K

二级缓存 L2 2048K

前端总线频率 1066MHz

64位处理器 是

核心数量 双核

Virtualization(虚拟化) 支持

外频

外频是CPU的基准频率,单位也是MHz。外频是CPU与主板之间同步运行的速度,而且目前的绝大部分电脑系统中外频也是内存与主板之间的同步运行的速度,在这种方式下,可以理解为CPU的外频直接与内存相连通,实现两者间的同步运行状态。

前端总线(FSB)频率(即总线频率)是直接影响CPU与内存直接数据交换速度。由于数据传输最大带宽取决于所有同时传输的数据的宽度和传输频率,即数据带宽=(总线频率×数据带宽)/8。

外频与前端总线(FSB)频率的区别:前端总线的速度指的是数据传输的速度,外频是CPU与主板之间同步运行的速度。也就是说,100MHz外频特指数字脉冲信号在每秒钟震荡一千万次;而100MHz前端总线指的是每秒钟CPU可接受的数据传输量是100MHz×64bit÷8Byte/bit=800MB/s。

倍频系数是指CPU主频与外频之间的相对比例关系。在相同的外频下,倍频越高CPU的频率也越高。但实际上,在相同外频的前提下,高倍频的CPU本身意义并不大。这是因为CPU与系统之间数据传输速度是有限的,一味追求高倍频而得到高主频的CPU就会出现明显的“瓶颈”效应-CPU从系统中得到数据的极限速度不能够满足CPU运算的速度。

缓存

现在的CPU普遍有一级缓存和二级缓存。一般来说,一级缓存的数量比较少,而二级企业缓存的数量一般比一级缓存大几倍。为什么要缓存呢,这主要是CPU厂家为了提高CPU的使用效率。因为,随着CPU的速度的快速发展,目前的CPU速度已经达到一个令人惊讶的速度,据个例子来说,一个奔腾3-1G的CPU其运算速度为每秒钟能够完成10亿次二进制计算,而一个奔腾4-3G则意味着每秒钟能够完成30亿次二进制运算。当然由于CPU还要介入浮点数据转换和介入控制主板上的其他设备资源,实际真正用于数据处理的资源会受到较大影响,但总体来说,CPU的速度已经达到一个前所未有的程度。由于其他硬件在数据传输方面未能跟上,因此,CPU厂家就在CPU内封装了缓存,其中,一级缓存主要将CPU的硬指令长期存储,以便CPU在调用指令时不必再通过与内存交换数据来取得,另外,还将最近处理的进程数据(中间数据)存放在一级缓存;而二级缓存则是完全存放最近处理的进程数据(中间数据)和即将调用的数据。通过这样一来设置,就可以避免CPU运算过程中要频繁与内存交换数据,减少CPU的等待时间,提高CPU的利用效率。三级缓存是为读取二级缓存后未命中的数据设计的-种缓存,在拥有三级缓存的CPU中,只有约5%的数据需要从内存中调用,这进一步提高了CPU的效率。

2. 微机原理浮点数

str是指令寄存器。数据寄存器- 用来储存整数数字(参考以下的浮点寄存器)。在某些简单/旧的CPU,特别的数据寄存

器是累加器,作为数学计算之用。

地址寄存器- 持有存储器地址,用来访问存储器。在某些简单/旧的CPU里,特别的地址寄存器是索引寄存器(可能出现一个或多个)。

通用目的寄存器(GPRs) - 可以保存数据或地址两者,也就是说它们是结合数据/地址 寄存器的功用。

3. 计算机浮点数表示范围

浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。 浮点计算是指浮点数参与的运算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入。 一个浮点数a由两个数m和e来表示:a = m × be。在任意一个这样的系统中,我们选择一个基数b(记数系统的基)和精度p(即使用多少位来存储)。

4. 浮点数在浮点机中的表示

浮点型常量浮点型即生活中使用的小数类型(例如3.14),例如账户的余额,银行的存款利率等等都是浮点型。C语言中按照精度的不同分别使用float,double和long double表示,默认浮点类型是double,float占据四个字节,double占据8个字节,long double大于等于8个字节,Windows 32位和64位系统long double都是8个字节,Ubuntu18.04系统下long double是占据16个字节。浮点数的常量可以使用十进制的小数和科学计数法表示,科学计数法可以存储特大或者特小的数字浮点数变量在初始化浮点数变量时,默认值建议为0.0或者0.0f,赋值时变量的值和变量的类型保持一致。

printf()函数输出float类型的变量使用格式符%f,输出double类型的变量使用%lf。浮点型极限C语言在limits.h的头文件中使用常量定义了float和double以及long double的极限值,我们可以使用sizeof()关键字求出float,double和long double的字节数量以及使用常量FLT_MAX,FLT_MIN求出float表示的最大值和最小值以及DBL_MAX,DBL_MIN求出double所能表示的最大值和最小值。

在windows上double和long double是等价的,但是在Linux(例如Ubuntu 18.04上)long double是占据16个字节,这也就意味着long double的极限比double更大。浮点数在内存中的存储首先明确一点,无论是整型、浮点型还是字符等等数据类型在计算机底层都是以二进制的方式存储的。浮点数在内存中的存储和整数不同,因为整数都可以转换为一一对应的二进制数据。而浮点数的存储是由符号位(sign)+指数位(exponent)+小数位(fraction)组成。

其中float是由1位符号位+8位指数+23位小数组成,而double是由1位符号位+11位指数位+52位小数位组成。

int和float同样占据四个字节的内存,但是float所能表示的最大值比int大得多,其根本原因是浮点数在内存中是以指数的方式存储。我们都知道在内存中,一个float类型的实数变量是占据32位,即32个二进制的0或者1组成从低位依次到高位叫第0位和第31位,这32位可以由三部分组成:符号位:第31位数表示符号位,如果为0表示整数,如果为1表示负数指数:第23位到第30位,这8个二进制表示该实数转化为规格化的二进制实数后的指数与127(127即所谓的偏移量)之和所谓阶码,规格化的二进制实数只能在-127-127之间。

小数位:第0位到第22位,最多可以表示23位二进制小数,否则超过了就会产生误差。浮点数相等性判断float占据四个字节,提供的有效位是6-7位,而double占据八个字节,提供的有效位数是15-16位,如果在使用float或者double表示实数时超过有效数字,若拿来进行关系运算(例如等于)的话,会得到一个错误的结果。

5. 计算机组成原理浮点数表示范围

浮点数一般包括单精度浮点数(float)和双精度浮点数(double)。

单精度浮点数精度:最多有7位十进制有效数字。单精度浮点数范围:-3.4*10^38~3.4*10^38。双精度浮点数精度:可以表示十进制的15或16位有效数字 双精度浮点数范围:1.7x10^(-308) ~ 1.7x10^308。区别: 可表示的精度不同,占用字节数不同。扩展: 浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。

6. 浮点数在计算机中表示

浮点数是属于有理数中某特定 子集的数的数字表示,在计算机中用以近似表示任意某个 实数。具体的说,这个实数由一个 整数或定点数(即 尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。

7. 计算机中浮点数的表示

读入一个浮点数,保留 3 位小数并输出这个浮点数。

把一个数的有效数字和数的范围在计算机的一个存储单元中分别予以表示。这种把数的范围和精度分别表示的方法,相当于数的小数点位置随比例因子的不同而在一定范围内可以自由浮动,所以称为浮点表示法。

8. 浮点数在计算机中如何表示?

浮点数

浮点计算

是指浮点数参与的运算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入。

一个浮点数a由两个数m和e来表示:a = m × b^e。在任意一个这样的系统中,我们选择一个基数b(记数系统的基)和精度p(即使用多少位来存储)。m(即尾数)是形如±d.ddd...ddd的p位数(每一位是一个介于0到b-1之间的整数,包括0和b-1)。如果m的第一位是非0整数,m称作规格化的。有一些描述使用一个单独的符号位(s 代表+或者-)来表示正负,这样m必须是正的。e是指数。

结构

由此可以看出,在计算机中表示一个浮点数,其结构如下:

尾数部分(定点小数) 阶码部分(定点整数)

阶符±

阶码e

数符±

尾数m

这种设计可以在某个固定长度的存储空间内表示定点数无法表示的更大范围的数。

浮点加法减法运算

设有两个浮点数x和y,它们分别为

x = Mx*2^Ex

y = My*2^Ey

其中Ex和Ey分别为数x和y的阶码,Mx和My为数x和y的尾数。

两浮点数进行加法和减法的运算规则是

设 Ex小于等于Ey,则 x±y = (Mx*2^(Ex-Ey)±My)*2^Ey,

完成浮点加减运算的操作过程大体分为四步:

1. 0 操作数的检查;

2. 比较阶码大小并完成对阶;

3. 尾数进行加或减运算;

4. 结果规格化并进行舍入处理。

⑴ 0 操作数检查

浮点加减运算过程比定点运算过程复杂。如果判知两个操作数x或y中有一个数为0,即可得知运算结果而没有必要再进行后续的一系列操作以节省运算时间。0操作数检查步骤则用来完成这一功能。

⑵ 比较阶码大小并完成对阶

两浮点数进行加减,首先要看两数的阶码是否相同,即小数点位置是否对齐。若二数阶码相同,表示小数点是对齐的,就可以进行尾数的加减运算。反之,若二数阶码不同,表示小数点位置没有对齐,此时必须使二数阶码相同,这个过程叫作对阶。

要对阶,首先应求出两数阶码Ex和Ey之差,即

△E = Ex-Ey

若△E=0,表示两数阶码相等,即Ex=Ey;若△E>0,表示Ex>Ey;若△E<0,表示Ex<Ey。

当Ex≠Ey 时,要通过尾数的移动以改变Ex或Ey,使之相等。原则上,既可以通过Mx移位以改变Ex来达到Ex=Ey,也可以通过My移位以改变Ey来实现Ex=Ey。但是,由于浮点表示的

9. 计算机的浮点数是什么

  浮点计算有单精度计算和双精度计算,指的是含有小数点的计算。  单精度和双精度的差别在于取值的范围大小不同。  浮点计算和整形数值的计算的差别在于:  整形值计算会将含小数点的数值进行四舍五入后再计算,计算结果为整形值(不含小数点);  浮点计算同时将小数点后的数字进行计算,结果保留小数点后的数字。