首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言之浮点数的存储

C语言中,有两种类型的浮点数:32位的float和64位的double,而在计算机中存储的是用二进制的科学计数法(即基数为2)表示的值 例如100=1100100B=1.1001B*26,123.456...将C语言中的定义转换为汇编验证一下 ? 再看一个纯小数的存储,例如0.00123456,这次倒着推导一下 ?...其中第一个0表示正值;挨着的8位01110101B=117,表示指数为(117-127)=-10;最后的23位表示尾数的小数部分,前面加上整数部分的1,再左移23位之后就是101000011101000011110110B...所以原值就是10604790/8589934592=0.0012345600407571,可见前10位小数都是正确的,精度还可以 ? 最后试个double的123.456 ?...好吧,double的精度确实高,比float表示的准多了! 我是泰山,专注VX 15年! 一起学习,共同进步!

1.5K11
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言浮点数float类型的秘密

    1 前言 我们在学习 C 语言时,通常认为浮点数和小数是等价的,并没有严格区分它们的概念,这也并没有影响到我们的学习,原因就是浮点数和小数是绑定在一起的,只有小数才使用浮点格式来存储。...其实,整数和小数可以都使用定点格式来存储,也可以都使用浮点格式来存储,但实际情况却是,C 语言使用定点格式存储整数,使用浮点格式存储小数,这是在 “数值范围” 和 “数值精度” 两项重要指标之间追求平衡的结果...浮点数转换到内存中存储的步骤分为如下三步: 将浮点数转换成二进制 用科学计数法表示二进制浮点数 计算指数偏移后的值 对于第3点:计算指数时需要加上偏移量(后面有介绍为什么使用偏移量),而偏移量的值与浮点数的类型有关...其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。...更多案例可以go公众号:C语言入门到精通

    4.8K2219

    C语言 | 判断是否素数

    “要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万中无一” ——包租婆 这道理放在C语言学习上也一并受用。...在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。 那么如何学习呢?当然是每天都练习一道C语言题目!! ? 作者 闫小林 白天搬砖,晚上做梦。...例16:C语言实现输入一个大于3的整数n,判断他是否为素数(质数)。...int main()//主函数 { int number,i;//定义变量 printf("请随机输入一个数:");//提示语句 scanf("%d",&number);//键盘输入需要判断的数...此题的关键是看结束循环时i的值是否小于number,如果number能被2~(number-1)之间的一个整数整除,则必然是由break语句导致循环提前结束,即i并未达到number的值时,循环就终止了

    2.7K3028

    C语言 | 判断回文数

    例86:一个五位数,C语言编程判断它是不是回文数。 解题思路:回文数是指个位与万位相同,十位与千位相同,即比如5555是回文数。 ...C语言源代码演示: #include //头文件  int main()//主函数  {   long individual;//个位   long ten; //十   long thousand...;//千   long ten_Thousand;//万    long number;   printf("请输入要判断的数:"); //提示语句    scanf("%ld",&number);   ...\n",number);   }    return 0;//主函数返回值为0  } 编译运行结果: 请输入要判断的数:66866 66866是回文数!...以上,如果你看了觉得对你有所帮助,就给小林点个赞,分享给身边的人叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C语言学习路线     C语言开发工具 更多案例可以go公众号:C语言入门到精通

    3.8K22

    C语言判断是否素数

    例16:C语言实现输入一个大于3的整数n,判断他是否为素数(质数)。...int main()//主函数  {   int number,i;//定义变量    printf("请随机输入一个数:");//提示语句    scanf("%d",&number);//键盘输入需要判断的数...读者需要知道什么是素数,素数一般指质数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。...此题的关键是看结束循环时i的值是否小于number,如果number能被2~(number-1)之间的一个整数整除,则必然是由break语句导致循环提前结束,即i并未达到number的值时,循环就终止了...C语言判断是否素数 更多案例可以go微信公众号:C语言入门到精通,作者:闫小林

    3.2K2828

    C语言 | 判断回文数

    “要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万中无一” ——包租婆 这道理放在C语言学习上也一并受用。...在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。 那么如何学习呢?当然是每天都练习一道C语言题目!! ? 作者 闫小林 白天搬砖,晚上做梦。...例86:一个五位数,C语言编程判断它是不是回文数。 解题思路:回文数是指个位与万位相同,十位与千位相同,即比如5555是回文数。...;//千 long ten_Thousand;//万 long number; printf("请输入要判断的数:"); //提示语句 scanf("%ld",&number);...\n",number); } return 0;//主函数返回值为0 } 编译运行结果: 请输入要判断的数:66866 66866是回文数!

    3.3K32

    C语言 实现浮点数的整型强制转化

    接下来分析一下这32个位都是什么,大家都知道二进制的四位可以用十六进制的1位表示。 关于浮点数的由十进制到二进制的转换大家一定也清楚,整数部分除二取余,小数部分乘二取整。...最后的结果是:12.125(10) = 1100.001(2) 浮点数共计占内存4个字节,即32位。这32位是按照这样的规则存储的: (1)一位符号位 整数为0 负数1。...真正转化现在开始,了解了前面的知识,我们就知道了浮点数是如何计算机中存储的,将其转换成整型无非就是取到它的整数部分即可。...下面实现这样的一个单精度浮点数到整型的强转函数: int float_to_int(float f) { int *p = (int*)&f; //由于指针访问内存是按照基类型进行的,首先进行强转访问浮点数...(关于这点,目前还在测试,一定会有一个满意的解释的) 写到这里,差不多结束了,其实双精度浮点数的强转时类似,只要能完全掌握双精度浮点数在内存中的存数形式。

    2.6K20

    【C语言进阶】内存中浮点数的存储规则

    二、 浮点数在内存中的存储是怎样的 2.1 引例 浮点数的存储规则: 举例来说: 有效数字M和指数E的特别规定 验证浮点数是不是这样存储的 2.2 指数E的三种情况 (1) E不全为0或不全为1 (2)...E全为0 (3)E全为1 三 、开头例题讲解 总结 今天我们讲解了 前言 大家在写C语言中都用过浮点数float,和double。...但是你们知道在内存中是怎么存储的吗? 一、什么叫做浮点数? 在生活中我们常见的浮点数: 3.14 1E10 这种科学计数法:由于小数点可以左右移动,所以我们称为浮点数。...1.1 浮点数家族有哪些? C语言常用的浮点数有: float doule long doule 其中 long double 是在C语言 C99& 的新标准中增加的。...什么是浮点数 浮点数的存储规则 浮点数在内存中的存储模型 在IEEE 电气电子工程师协会中关于 指数E 和 有效数字M的规定 指数E的3种情况 希望大家有所收获呢。

    25810

    C语言中的浮点数存储:深入探讨

    *pFloat的值为:%f\n", *pFloat); return 0; } 结果如下: 由此可知,C语言中浮点数的存储方式和整数的存储方式是不同的,下面就让我们详细了解一下。...引言 在C语言中,浮点数用于表示实数,尤其是那些带有小数点的数值。浮点数的存储机制复杂,但它是计算机科学中的重要组成部分。...本文将详细介绍C语言中的浮点数在内存中的存储方式,基于IEEE 754标准,并涵盖单精度和双精度浮点数的内部表示。 1....总结 C语言中的浮点数存储是一个复杂而重要的主题。它涉及到符号位、指数位和尾数的详细布局,以及IEEE 754标准的规范。通过理解浮点数的存储机制,你可以更好地处理浮点数的计算和调试问题。...希望本文对你理解C语言中的浮点数存储有所帮助。

    19210

    C语言-整数与浮点数:内存存储的差异

    整数与浮点数在内存中的存储机制 在计算机科学中,整数和浮点数是我们经常处理的两种数据类型。它们在内存中的存储方式决定了它们可以表示的范围、精度以及如何进行数学运算。...浮点数在内存中的存储 浮点数的存储要复杂得多,因为它们需要表示小数点和指数的变化。在计算机中,浮点数通常遵循IEEE 754标准,这是一种广泛接受的浮点数表示方法。...IEEE 754标准下的浮点数由三部分组成:符号位、指数位和尾数位。 符号位:和整数一样,用于表示浮点数的正负。 指数位:用于表示浮点数的大小。它实际上表示的是二进制小数点应该移动的位置。...尾数位:也称为尾数或有效数字,用于表示浮点数的精确值。这是小数点后的二进制表示。 IEEE 754标准定义了单精度(float)和双精度(double)两种浮点数格式。...由于浮点数的表示方式,它们并不能精确地表示所有的实数。例如,0.1在二进制浮点数中只能是一个近似值,这可能导致在进行浮点数运算时出现舍入误差。

    11010

    【C语言】整数和浮点数在内存中的存储

    一、 整数在内存中的存储 详情请见拙文 【C语言】中的位操作符和移位操作符,原码反码补码以及进制之间的转换 其中详细介绍了整数在内存中的存储是依靠原反补码存储实现的 二、大小端字节序和字节序判断 首先声明我使用的编译器是...ret = func(); if (ret == 1) { printf("⼩端\n"); } else { printf("⼤端\n"); } return 0; } 这个程序可以判断你使用的机器的字节序是大端还是小端...() { char a = -1; signed char b = -1; unsigned char c = -1; printf("a=%d,b=%d,c=%d", a, b, c); return...第二项是a[1]地址转化成整形然后加1 四、 浮点数在内存中的存储 根据国际标准IEEE,任意⼀个⼆进制浮点数V可以表示成: 对于32位的浮点数,即float,最高的1位存储符号位S,接着的...比如,2^10的E是10,所以保存成32位浮点数时,必须保存成10+127=137,即10001001 当E全为0时,浮点数的指数E等于1-127(或者1-1023)即为真实值,有效数字M不再加上第一位的

    8710

    【C语言课程学习】:浮点数在内存中的存储

    1.浮点数的表示: 根据国际标准IEEE(电气和电子工程协会)754,任意一个二进制浮点数V可以表示成: V=(-1)^S*M*2^E 1.S S=0,表示浮点数为正。...S=1,表示浮点数为负。因为不管是float(单精度浮点型),还是double(双精度浮点型),都是只用一个比特位来存储s,也只需要一位就可以表示数据的正负,所以s要么是0,要么为1。...float(单精度浮点数)类型占4个字节(32个比特位)。 double(双精度浮点数)类型占8个字节(64个比特位)。...1.对于32位浮点数,最高位的1位比特位存储S,接下来的8位比特位存储E,最后23位用来存储M....) 2.对于64位浮点数,最高位的一位比特位存储S,接下来11位比特位存储E,最后52位用来存储M.

    21210
    领券