精华内容
下载资源
问答
  • 单精度、双精度和半精度浮点格式之间的区别 IEEE 浮点算术标准是用来衡量计算机上以二进制所表示数字精度的通用约定。在双精度格式中,每个数字占用64位,单精度格式占用32位,而半精度仅16位。 要了解其中工作原理...

    源自公众号strongerHuang

    单精度、双精度和半精度浮点格式之间的区别
    在这里插入图片描述

    IEEE 浮点算术标准是用来衡量计算机上以二进制所表示数字精度的通用约定。在双精度格式中,每个数字占用64位,单精度格式占用32位,而半精度仅16位。
    要了解其中工作原理,我们可以拿圆周率举例。在传统科学记数法中,圆周率表示为3.14 x100。但是计算机将这些信息以二进制形式存储为浮点,即一系列的1和0,它们代表一个数字及其对应的指数,在这种情况下圆周率则表示为1.1001001 x 21。
    在单精度32位格式中,1位用于指示数字为正数还是负数。指数保留了8位,这是因为它为二进制,将2进到高位。其余23位用于表示组成该数字的数字,称为有效数字。
    而在双精度下,指数保留11位,有效位数为52位,从而极大地扩展了它可以表示的数字范围和大小。半精度则是表示范围更小,其指数只有5位,有效位数只有10位。
    圆周率在每个精度级别表现如下:
    在这里插入图片描述

    嵌入式专栏

    3

    多精度和混合精度计算的差异
    多精度计算意味着使用能够以不同精度进行计算的处理器,在需要使用高精度进行计算的部分使用双精度,并在应用程序的其他部分使用半精度或单精度算法。
    混合精度(也称为超精度)计算则是在单个操作中使用不同的精度级别,从而在不牺牲精度的情况下实现计算效率。
    在混合精度中,计算从半精度值开始,以进行快速矩阵数学运算。但是随着数字的计算,机器会以更高的精度存储结果。例如,如果将两个16位矩阵相乘,则结果为32位大小。
    使用这种方法,在应用程序结束计算时,其累积得到结果,在准确度上可与使用双精度算法运算得到的结果相媲美。
    这项技术可以将传统的双精度应用程序加速多达25倍,同时减少了运行所需的内存、时间和功耗。它可用于 AI 和模拟 HPC 工作负载。
    随着混合精度算法在现代超级计算应用程序中的普及,HPC 专家 Jack Dongarra 提出了一个新的基准,即 HPL-AI,以评估超级计算机在混合精度计算上的性能。
    混合精度计算主要用于现在很火人工智能领域,感兴趣的读者可以上网搜索更多关于混合精度计算的内容。

    展开全文
  • 在C语言中可以用单精度型和双精度型两种形式表示实型常量,分别用e68a843231313335323631343130323136353331333431376561类型名floatdouble进行定义。实型常量在一般的微型集中占用4个字节,一般形式或者指数形式...

    展开全部

    实型常量又称实数或浮点数。在C语言中可以用单精度型和双精度型两种形式表示实型常量,分别用e68a843231313335323631343130323136353331333431376561类型名float和double进行定义。

    实型常量在一般的微型集中占用4个字节,一般形式或者指数形式,数值范围都是-1038~1038,有效数字是7位。

    浮点型数据又分为单精度型(float)和双精度型(double)两种。

    1、单(float):占用比特数32,有效数位6-7,数值范围(-3.4e-38~3.4e+38)

    2、双(double):占用比特数64,有效数位15-16,数值范围(-1.7e-308~1.7e+308)

    扩展资料

    c语言中,数据类型分为整形、实型和指针类型(以下内容均表示在32位操作系统中):

    其中整形分为char,shortint,longint,longlong,各种类型的使用,前面都可以加上unsigned表示无符号char字符类型,表示的大小为-128~127,大小为一个字节;

    其中0-127被编为ASCⅡ码shortint短整形-65536~655352个字节longint整形-20亿多~20亿多4个字节longlong长整型8个字节longint通常写为int代表的是CPU字长;

    在32为操作系统中cpu的字长是32位,即4个字节实行(浮点型)分为float和double:float6~7位有效数字4个字节double15~16位有效数字8个字节在现代CPU中,有一个协处理器专门进行浮点数的运算;

    然后根据类型进行精度截取指针类型32位无符号整数,即unsignedint,但是它只能表示内存中一个比特的空间的编号注:32位CPU的内存寻址范围是从32个0到32个1,总计4GB,所以,32位操作系统最高只支持4G内存。

    展开全文
  • 浮点类型存储

    2021-02-02 15:11:30
      对于浮点类型的数据采用单精度类型(float,4字节)和双精度类型(double,8字节)来存储。根据国际标准IEEE 754标准规定,无论是单精度还是双精度在存储中都分为三个部分: (1)符号位(Sign) : 0代表正,1代表为...

    1.简介

      对于浮点类型的数据采用单精度类型(float,4字节)和双精度类型(double,8字节)来存储。根据国际标准IEEE 754标准规定,无论是单精度还是双精度在存储中都分为三个部分:
    (1)符号位(Sign) : 0代表正,1代表为负
    (2)指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储
    (3)尾数部分(Mantissa):尾数部分

    2.单精度与双精度

      float和double类型:
    (1)float类型(32位,4字节)有一个符号位(S),有8个指数位(E),和23个有效数字位(M)
    from web

    (2)double类型(64位,8字节)有一个符号位(S),有11个指数位(E),和52个有效数字位(M)

    from web

    S E M 公式 偏移量
    单精度浮点 1(第31位) 8(30到23位) 23(22到0位) (-1)^S*2(E-127)*1.M 127
    双精度浮点 1(第63位) 11(62到52位) 52(51到0位) (-1)^S*2(E-1023)*1.M 1023

    3.表示范围

      浮点数的表示有一定的范围(受限于float和double大小),超出范围时会产生溢出(Flow),一般称大于绝对值最大的数据为上溢(Overflow),小于绝对值最小的数据为下溢(Underflow)。

    二进制 十进制
    float ± (2-2^-23) × 2127 ~ ± 10^38.53
    double ± (2-2^-52) × 21023 ~ ± 10^308.25

    4.实际举例

    举例数据:20.125(D) float类型
    进制转换:10100.001(B)
    即:(-1)0×1.0100001×24 (乘24就是左移4位,和科学计数法10n一样)
    这里可以知道:
    S:0
    E:4+127=131(1000 0011)
    M:0100001(去掉最前面的1)

    下面将位数补齐到32位:

    S(1) E(8) M(23)
    0 1000 0011 0100 0010 0000 0000 0000 000

    继续将上述二进制数转为16进制数:
    0100 0001 1010 0001 0000 0000 0000 0000
    0x41 0xa1 0x00 0x00
    编写代码测试:

    #include <stdio.h>
    
    int main()
    {
            float val = 20.125;
            int *ptr = (int *)&val;
    
            printf("val: 0x%0x\n", *ptr);
    
            return 0;
    }
    

    运行结果:

    得出结论与运算结果一致。

    5.浮点数比较

      因为浮点数存在精度的问题,所以两个浮点数a,b(如3.1415 与 3.1415926)不能直接用 == 来判断是否相同,而应该是求他们的
    差值跟精度相比较这种方法来判断,如: fabs(a-b) < 0.0001。

    代码:

    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
        float a = 3.1415;
        float b = 3.1415926;
    
        if( fabs(a-b) < 0.00001 )
        {
            printf("Equal\n");
        }
        else
        {
            printf("Not equal\n");
        }
        return 0;
    }
    

    运行结果:
    Not equal

    修改0.00001->0.0001后代码:

    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
        float a = 3.1415;
        float b = 3.1415926;
    
        if( fabs(a-b) < 0.0001 )
        {
            printf("Equal\n");
        }
        else
        {
            printf("Not equal\n");
        }
        return 0;
    }
    

    运行结果:
    Equal

    因此在浮点数比较中精度的选择非常重要。

    展开全文
  • 矩形单元的位移模式是双线性函数,单元的应力、应变式线性变化的,具有精度较高,形状规整,便于实现计算机自动划分等优点,缺点是单元不能适应曲线边界斜边界,也不能随意改变大小,适用性非常有限。 17. 写出...
  •  1、常量 类型 符号表示 举例 整型常量   ...双精度常量   123.4,1e-2 单精度常量 f F 123.4f 常量表达式   3+6 字符常量   'x' #define宏定义
    

    1、常量

    类型 符号表示 举例
    整型常量   1234
    长整型常量 l L 123456789L
    无符号常量 u U 1234u
    双精度常量   123.4,1e-2
    单精度常量 f F 123.4f
    常量表达式   3+6
    字符常量   'x' #define宏定义
    字符串常量   "hello world"
    枚举常量   enum{YES,NO};

    转义字符常量

    \n,\t,等


    2、C变量及函数存储类型

    (1)变量及函数声明格式

    • 变量的声明格式

        存储类型    类型修饰符    数据类型    变量名

    说明:

    存储类型:auto,extern,register,static;指明变量的存储位置

    类型修饰符:long,short,signed,unsigned       

    数据类型:int,char,double,float,自定义类型struct,union 

    • 函数的声明格式

        存储类型    返回数据类型    函数名(参数列表)

    说明:

    存储类型:指明函数的作用域 extern,static

    (2)各种不同的存储类型

    各存储类型比较
    类型 作用域 生存域 存储位置
    auto变量 一对{ }内 当前函数
    extern函数 整个程序 整个程序运行期 代码段
    extern变量 整个程序 整个程序运行期 初始化在data段,未初始化在BSS段
    static函数 当前文件 整个程序运行期 代码段
    static全局变量 当前文件 整个程序运行期 初始化在data段,未初始化在BSS段
    static局部变量 一对{ }内 整个程序运行期 初始化在data段,未初始化在BSS段
    register变量 一对{ }内 当前函数 CPU寄存器中
    常量 当前文件 整个程序运行期 data段


    3、栈与堆

    栈:存放函数调用时需记录的上下文信息,连续的存储单元,由操作系统管理,向低地址增长

    堆:存放动态数据,非连续存储单元(链表结构),由程序员管理,向高地址增长


    4、举例

    1. /*通过下面简单的代码来查看C程序执行时的内存分配情况*/  
    2. #include <stdio.h>  
    3. #include <stdlib.h>  
    4.   
    5. int a = 0;//data区  
    6. char* p0;//bss区  
    7.   
    8. int main(void)  
    9. {         
    10.     int b;//栈  
    11.     char s[] = "abc";//s-栈,abc\0-data  
    12.     char *p1,*p2;//p1,p2-栈  
    13.     char *p3 = "123456";//p3-栈,123456\0-data  
    14.     static int c = 0;//c-data  
    15.     p1 = (char*)malloc(10);//10byte-堆  
    16.     p2 = (char*)malloc(20);//20byte-堆  
    17.     free(p1);  
    18.     free(p2);  
    19.     p1 = NULL;  
    20.     p2 = NULL;  
    21.     return 0;  
    22. }  

    展开全文
  • MYSQL中的FLOAT、DOUBLEDECIMAL类型

    千次阅读 2013-12-20 11:52:21
    FLOAT数值类型用于表示单精度浮点数值,而DOUBLE数值类型用于表示双精度浮点数值。  与整数类型一样,这些类型也带有附加参数:一个显示宽度指示器一个小数点指示器。例如,语句FLOAT (5,2)规定显示的值不会...
  • 变量、数据类型运算符 1. 变量数据类型 1.1 变量 ​ 变量是储存数据的一个基本单元...双精度浮点型 用于储存带有小数的数字,如商品价格,员工工资 char 字符型 用于储存单个字符,如性别“男”或“女”、成...
  • 单片微机测控系统设计大全(推荐)

    热门讨论 2009-01-15 09:39:11
    8 集成稳压器精度稳压器 2. 9 系统监控集成电路MAX703~709/813L 第3章 工业控制计算机技术要点 3. 1 微型计算机的选用 3. 2 MCS—51单片机的结构 3. 3 MCS—51单片机的定时器. 串行口中断系统 3. 4 MCS—96...
  • 1.变量数据类型 变量 旅馆中的房间 变量 房间名称 变量名 房间类型 变量类型 入住的客人数量 ...举例 ...双精度浮点型 比如说1.0、48.66、142.4814等等 char 字符型 用于存储单个字符,例如:...
  • 详述Java基本数据类型

    2019-05-25 19:50:28
    (1)JavaC语言一样具有浮点型(单精度双精度)、整型(长整型,短整型)、字符型,还有布尔型(Boolean)。不同的数据类型具有不同的字节数位数。具体如下图 (2)各类数据类型举例: public class ...
  • FLOAT 数值类型用于表示单精度浮点数值,而 DOUBLE 数值类型用于表示双精度浮点数值。与整数类型一样,这些类型也带有附加参数:一个显示宽度指示器一个小数点指示器。例如,语句FLOAT (5,2)规定显示的值不会超过5...
  • 浮点数转二进制

    千次阅读 2019-06-22 09:46:56
    浮点数有两种:单精度float(4字节) 双精度double(8字节) 浮点数在计算机按照 “公式” 的存储格式为: 约定:123.123(10) 表示十进制123.123 举例:123.125(10) 分开 “整数” “小数” 两部分来转二...
  • c语言(基础重点)

    2019-07-13 13:50:00
    单精度浮点型 float 4 双精度浮点型 double 8 (3)字符型: char 1 二、补码:(1)正数:原码就是补码(原码补码反码一样) (2) 负数:反码(不包括符号位)+1 三、(1)二进制(补码)转8进制16进制 举例:...
  • Java第二章作业

    2020-09-27 20:23:09
    1、Java包括哪些数据类型?请举例说明。 基本数据类型: 整数类型:123,-123,-011(八进制整数),0x123(十六进制整数) byte:8位,数的范围是-27~...double:64位,‘D’‘d’用来表示双精度,例如3.4d,1.1
  • 浮点类型的存储

    2009-10-14 23:29:00
    在c语言中,单精度(float)数据类型为32bits,分三部分:Sign:符号位,1 bit,0为正,1为负;... 同理,双精度(double)占64位,三部分分别为:1位,11位52位,偏移量为1023举例:浮点类型的值4.25在计算机中存储的
  • 第三章 3.3运算符表达式 3.3.2 基本的算术运算符 运算符 含义 举例 ...正号运算符(目运算符) ...两个实数相除的结果是双精度实数,两个整数相除的结果为整数,如5/3的结果为整数, 如5/3的结果值为1
  • 2.支持四则运算,支持括号,支持负数,支持双精度浮点数double。 支持+-*/。运算数以数组表示,并模拟+-*/,并没有直接调用C/C++当中的+-*/运算符对两个运算数进行运算。 3.支持以下字符串运算:"123+-456","123--...
  • Python核心编程第二版(中文)

    热门讨论 2015-04-23 16:40:13
    5.3 双精度浮点型 5.4 复数 5.5 操作符 5.5.1 混合模式操作符 5.5.2 标准类型操作符 5.5.3 算术操作符 5.5.4 *位操作符(只适用于整型) 5.6 内建函数与工厂函数 5.6.1 标准类型函数 5.6.2 数字类型函数 ...
  • 深入理解Python中文版高清PDF

    热门讨论 2012-09-04 19:37:04
     5.3 双精度浮点型   5.4 复数   5.5 操作符   5.5.1 混合模式操作符   5.5.2 标准类型操作符   5.5.3 算术操作符   5.5.4 *位操作符(只适用于整型)   5.6 内建函数与工厂函数  ...
  • Python核心编程(中文第二版)

    热门讨论 2009-10-02 12:08:14
     5.3 双精度浮点型   5.4 复数   5.5 操作符   5.5.1 混合模式操作符   5.5.2 标准类型操作符   5.5.3 算术操作符   5.5.4 *位操作符(只适用于整型)   5.6 内建函数与工厂函数   5.6.1 ...
  • Python核心编程第二版(ok)

    热门讨论 2009-05-21 08:23:44
     5.3 双精度浮点型   5.4 复数   5.5 操作符   5.5.1 混合模式操作符   5.5.2 标准类型操作符   5.5.3 算术操作符   5.5.4 位操作符(只适用于整型)   5.6 内建函数与工厂函数   5.6.1 ...
  • Python核心编程第二版

    热门讨论 2009-07-30 17:07:20
     5.3 双精度浮点型   5.4 复数   5.5 操作符   5.5.1 混合模式操作符   5.5.2 标准类型操作符   5.5.3 算术操作符   5.5.4 *位操作符(只适用于整型)   5.6 内建函数与工厂函数   5.6.1 ...
  • DirectX 11包含的SM 5.0,采用面向对象的概念,并且完全可以支持双精度数据。随着SM 5.0的发布,微软也会将HLSL语言更新至最新版本,其中包含了诸如动态着色、动态分支更多的对象等。 6.改进的纹理压缩 DirectX ...
  • 2.支持四则运算,支持小括号(不支持中括号大括号),支持负数,支持双精度浮点数double。 支持+-*/。运算数以数组表示,并模拟+-*/,并没有直接调用C/C++当中的+-*/运算符对两个运算数进行运算。 3.支持以下字符串...
  • TRAINERMAKER

    2012-02-26 14:30:11
    DOUBLE :双精度浮点型,3.4E-38 至 3.4E38 (8 字节)。 应该举例及指令使用方法: [Poke] 重写已知数值到内存(语法: Poke 地址 反向十六进制数): 例:将数值 90000 7477788 重写到内存地址 405888 ...
  • 14.4.1 循环定时程序 14.4.2 多重循环定时程序 14.5 定点数运算程序设计 14.5.1 定点数的表示方法 14.5.2 定点数加减运算 14.5.3 定点数乘法运算 14.5.4 定点数除法 14.6 浮点数运算程序设计 14.6.1 浮点数的表示 ...
  • msp430书稿开发板

    2011-03-17 21:46:39
    2.4.1.2极性正弦脉宽调制 - 113 - 2.4.1.3三相正弦脉宽调制 - 114 - 2.4.1.4正弦脉宽调制(SPWM)控制信号的生成 - 114 - 2.4.2三相正弦波变频电源(2005年国赛G题) - 115 - 2.4.2.1 题目分析 - 115 - 2.4.2.2...

空空如也

空空如也

1 2 3
收藏数 42
精华内容 16
关键字:

单精度和双精度举例