2 daxiangele1 daxiangele1 于 2016.01.20 11:46 提问

C语言中float类型浮点数

请问C语言中float类型浮点数的阶码为什么要使用移码表示,这样表示的优点是什么?

3个回答

91program
91program   Ds   Rxr 2016.01.20 12:03
caozhy
caozhy   Ds   Rxr 2016.01.20 11:48

如果阶码(指数)也用补码来表示,就会使得一个浮点数中出现两个符号位:浮点数自身的和浮点数指数部分的。这样的结果是,在比较两个浮点数大小时,无法像比较整数时一样使用简单的无逻辑的二进制比较。

http://www.zhihu.com/question/24115452

Royal_lr
Royal_lr   Ds   Rxr 2016.01.20 16:42

因为浮点数正负之分啊

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言浮点型数据存储结构
1.float类型 float类型占四个字节,每个字节占8位,总共32位,其内存结构如下图: 31位为符号位:0表示正数,1表示负数 31~23位:共8位表示指数位,内存存储数据从0~2^8-1=255,由于指数可以是正也可以是负,所以指数位 采用移位存储表示数据,8位有符号有可表示数据从-127~128,所以指数位表示的实际指数应该是无符号位 数减去127,例如0000 0
C语言基础学习基本数据类型-浮点型
c语言里的浮点型数据类型
C语言中float, double类型在内存中的存储方式
本文转载于:http://wenku.baidu.com/link?url=ARfMiXVHCwCZJcqfA1gfeVkMOj9RkLlR9fIexbgs9gDdV8rIS48A1_xe1y6YgXnSlpof5pKKJbjScy1StbVdiUWARuAYUIYiyHeTIIhVaz3    C语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,
关于C语言中不同类型的输出格式以及浮点数除法格式的显示详解
一,C语言中的输出函数及常见易错类型格式总结:
C语言(浮点精度)
关于C语言的浮点数精度问题,很多人存在误解,他们往往认为精度指的是float、double和long double三种数据类型,这是片面的。   拓展: 浮点数的二进制存储细节: 对于每个不同的浮点数,都有相应的最小可辨识精度(即δ),此最小可辨识精度随着该浮点数的数值变化而变化,具体究竟是多少要具体分析该浮点数的二进制存储内部细节,找到其指数域之后才能确定,我们根
C语言中printf用%d输出float类型数据,或以%f输出int型数据的结果
C语言中printf用%d输出float类型数据,或以%f输出int型数据的结果 IEEE754标准 单精度(32位)/双精度(64位)浮点数解码 float double 有效位数
一个有关C语言浮点数保留2位小数的操蛋问题
问题描述:   12.105这种浮点数,被保存后有误差,导致在使用printf保留两位小数时成了12.10.未评估解决方案:float Power10(unsigned int i)       //递归计算10的i次幂{ if(i) {  float tRes = Power10(i>>1);  return tRes * ( (i & 0x1)? tRes * 10.0f : tRes );      //i转化二进制逻辑尺使用 } else {  return 1.0f;       //递归终结,1
c语言的printf输出浮点数的一些问题
在printf时:如果以%f格式输出,将输出8个字节(scanf输入时,%f是4个字节)                    在参数入栈时如果是float型或者double型 直接入栈8个字节,此时输出及后续输出都没问题                     但如果参数小于8个字节且不是float型:比如int   shor int  ,就会扩展符号位,成为4个字节再入栈,但是输出的是8个
两个float数的比较大小以及浮点数是否和0相等
 两个float数的比较大小以及浮点数是否和0相等     计算机表示浮点数(float或double类型)都有一个精度限制,对于超出了精度限制的浮点数,计算机会把它们的精度之外的小数部分截断。因此,本来不相等的两个浮点数在计算机中可能就变成相等的了。例如:     float a=10.222222225,b=10.222222229     数学上a和b是不相等的,但在
C语言中fscanf函数读取double型浮点数的问题
转载时请注明出处和作者联系方式作者联系方式:Lutx (80437#zj.com)  在C语言里面, 将一个浮点数输出到文件中, 可以使用符号%f, 如 double a = 0.0;fprintf(fp, "a = %f", a); 而如果要从文件中读取一个double类型的浮点数, 就不能用%f, 而要用%lf才可以. 如 double a;float