c-浮点数是用什么进行运算的????

问题描述

浮点数是用什么进行运算的????

浮点数是用补码的方法进行减法运算的吗?
若是,那么他是怎么算的,浮点数中存在着阶码,转为补码的时候,阶码也要跟着反码加一之类的吗?
若不是,那么他是怎么进行运算的?

解决方案

另外要注意一个问题,就是浮点数计算是允许有许可范围内的误差的。换一句话说,两个不同的计算机,可能对于相同的输入,产生的结果是不同的。当然这种不同必须在限定的范围内。
曾经intel发布过一些pentium处理器,其中的浮点误差远远超过了标准的规定,最后intel不得不召回了这些处理器(我还收藏了一块有问题的pentium)。
为什么不同的处理器得到的结果不同呢?因为实现方法不同。既然不同的处理器实现的方法都不同,你讨论这种问题有什么意义呢?
人计算浮点数,只要按照人的方法计算好了。

解决方案二:

对于80486(SX除外)以前的处理器,如果没有x87浮点协处理器,就是用软件去算的,尾数按照整数去算,然后再把进位算到阶码上。
对于此后的处理器,都是硬件直接实现的。

解决方案三:

符号表正负数,原码表尾数,移码表指数
浮点数 是二进制 科学记数法 表示的数。
float,double 都有隐藏位,
浮点数,有两种格式
1种是 绝对值极小的浮点数,隐藏位 为0,指数固定 这是非规格化的浮点数 表示为二进制 (+-)0.X E C
1种是 规格化浮点数 隐藏位为1 指数根据浮点数的值而变动 表示为二进制 (+-)1.X E e ;
另外还有一些特殊编码,表示 0,inf (无穷大),Nan (不是一个数)登特殊值

解决方案四:

http://www.cnblogs.com/xkfz007/archive/2012/02/27/2370357.html

解决方案五:

详细解答:http://wenku.baidu.com/link?url=9mJwTzOwhzqrZOwmddOrX8u1jEaGJZPT1R4_Wh5BwOdU0A4gsojh6WAUCTKWJkEFEdswhDW-mt4yeMRbQJJnTX4oNag8iKY09cSQ3EfYyQG

解决方案六:

浮点数的运算
浮点数运算注意事项
Java浮点数精确运算

时间: 2024-09-14 15:40:05

c-浮点数是用什么进行运算的????的相关文章

js中位运算的运用

原文:js中位运算的运用 我们可能很少在编程中用位运算,如果没深入学习,可能也很难理解.平时的数值运算,其实是要先转换成二进制再进行运算的,而位运算就是直接进行二进制运算,所以位运算的执行效率肯定是更高的.下面通过一些实例来加深对位运算的理解. 按位与(&) &&运算符我们都知道,只有两个都为真,结果才为真.&道理是一样的,只有两个数的值为1时,才返回1.例如1和3的按位与操作: 0001 & 0011 --------- 0001 只有对应的数为1时,结果才为1,

C#浮点数的表示和基本运算_C#教程

1 浮点数的表示 通常,我们可以用下面的格式来表示浮点数 S P M 其中S是符号位,P是阶码,M是尾数 对于IBM-PC而言,单精度浮点数是32位(即4字节)的,双精度浮点数是64位(即8字节)的.两者的S,P,M所占的位数以及表示方法由下表可知 S P M 表示公式 偏移量 1 8 23 (-1)S*2(P-127)*1.M 127 1 11 52 (-1)S*2(P-1023)*1.M 1023 以单精度浮点数为例,可以得到其二进制的表示格式如下 S(第31位) P(30位到23位) M(

C#浮点数的表示和基本运算方法是什么

1 浮点数的表示 通常,我们可以用下面的格式来表示浮点数 S P M 其中S是符号位,P是阶码,M是尾数 对于IBM-PC而言,单精度浮点数是32位(即4字节)的,双精度浮点数是64位(即8字节)的.两者的S,P,M所占的位数以及表示方法由下表可知 S P M 表示公式 偏移量 1 8 23 (-1)S*2(P-127)*1.M 127 1 11 52 (-1)S*2(P-1023)*1.M 1023 以单精度浮点数为例,可以得到其二进制的表示格式如下 S(第31位) P(30位到23位) M(

Javascript核心读书有感之表达式和运算符

这篇文章主要介绍了Javascript核心读书有感之表达式和运算符,十分详细,需要的朋友可以参考下     表达式是javascript中的一个短语,javascript解释器会将其计算出一个结果.程序中常用量是最简单的一类表达式就是变量.变量名也是一种简单的表达式,它的值就是赋值给变量的值. 复杂的表达式是由简单的表达式组成的.比如数组访问表达式是由一个表示数组的表达式,方括号.一个整数表达式构成.它们所组成新的表达式运算结果是该数组特定位置的元素值.同样的函 数调用表达式由一个表示函数对象的

Javascript核心读书有感之表达式和运算符_基础知识

表达式是javascript中的一个短语,javascript解释器会将其计算出一个结果.程序中常用量是最简单的一类表达式就是变量.变量名也是一种简单的表达式,它的值就是赋值给变量的值. 复杂的表达式是由简单的表达式组成的.比如数组访问表达式是由一个表示数组的表达式,方括号.一个整数表达式构成.它们所组成新的表达式运算结果是该数组特定位置的元素值.同样的函 数调用表达式由一个表示函数对象的表达式和0个多个参数表达式构成.将简单表达式组成复杂表达式最常用的方法就是运算符. 本章(本文)将讲解所有j

猫都能学会的Unity3D Shader入门指南(一)

动机 自己使用Unity3D也有一段时间了,但是很多时候是流于表面,更多地是把这个引擎简单地用作脚本控制,而对更深入一些的层次几乎没有了解.虽然说Unity引擎设计的初衷就是创建简单的不需要开发者操心的谁都能用的3D引擎,但是只是肤浅的使用,可能是无法达到随心所欲的境地的,因此,这种状况必须改变!从哪里开始呢,貌似有句话叫做会写Shader的都是高手,于是,想大概看看从Shader开始能不能使自己到达的层次能再深入一些吧,再于是,有了这个系列(希望我能坚持写完它,虽然应该会拖个半年左右). Un

C# decimal类型的计算问题

问题描述 如题,(decimal)100/(decimal)300*(decimal)60的运算结果是多少?20?是19.999999999999999999999999998有点费解.(double)100/(double)300*(double)60的运算结果是20有点无法理解,求解!感谢! 解决方案 解决方案二:精度不一样.解决方案三:正常,浮点数的精度损失造成的.解决方案四:楼上都正解解决方案五:回答要么浅尝辄止,要么似是而非,都毫无用处解决方案六:double是64位的,比single

求解答-为什么运行不出来?改了很多次了,不知道问题出在哪

问题描述 为什么运行不出来?改了很多次了,不知道问题出在哪 import java.awt.*; import java.applet.*; public class Calculator extends Applet{ TextField tfAnswer; //显示输入和结果的文本域 Button bPoint,bEqual,bPlus,bMinus,bClear,bMulti,bDivision; //运算符按钮 Button[] b=new Button[10]; //数字按钮 Stri

python基础教程之数字处理(math)模块详解_python

1.math简介 复制代码 代码如下: >>> import math>>>dir(math)          #这句可查看所有函数名列表>>>help(math)         #查看具体定义及函数0原型 2.常用函数 复制代码 代码如下: ceil(x) 取顶floor(x) 取底fabs(x) 取绝对值factorial (x) 阶乘hypot(x,y)  sqrt(x*x+y*y)pow(x,y) x的y次方sqrt(x) 开平方log(x