今天,天气不错!就写下计算机的硬件基础知识吧!首先来讲下数据计算吧!
1、定点数:
定点数:就是小数点的位置固定不变的数;
小数点的位置通常有两种约定方式:一种是定点整数(纯整数,小数点在最低有效数值位之后),另一种是定点小数(纯小数,小数点在最高有效数值位之前);如下图所示:
2、浮点数:
浮点数:就是小数点的位置不固定的数;
二进制N可以表示为:N=2^E * F,其中的E称为阶码,F称为尾数;该表示方法叫浮点表示法;
哈哈!阶码在浮点数中有什么用呢?其实浮点数所能表示的数值范围主要由阶码决定,所表示数值的精度则由尾数决定;
通常为了利用尾数表示更多的有效数字,而采用规格化浮点数;那规格化是什么意思?其实也就是将尾数的绝对值限定在区间[ 0.5,1];那用补码表示尾数时,该注意哪些问题?这里我就不讲了!O(∩_∩)O哈哈~
现在我们来讲下浮点数的计算吧!这可软考中的常考考点哦!可不能掉以轻心~哈
其实浮点数的运算也就那三个主要步骤:第一步就是对阶,第二步就是尾数计数,到了第三步就是结果格式化!
第一步的对阶究竟是什么?”阶”??~那是阶码吗?也就是指数喽!那”对”又是什么,那对阶的意思又是什么?^_^也就是使两个数的阶码相同的意思而已!
那如何使那两个数的阶码相同呢?这又是一个难题喽!首先设K=|第一个阶码 - 第二个阶码|;接着把阶码小的数的尾数右移K位,并使其阶码加上K就可以啦;
那第二步是求尾数和,也就是对阶完成后,两个浮点数尾数也就如同定点数,而它的计算过程同定点数那样计算;
到了最后一步啦!结果格式化,使用它的原因是因为尾数计算后,可能会产生溢出,此时将尾数右移,同时指数加1,如果指数加1后发生溢出,则表示两个浮点数的运算发生了溢出;
但是如果尾数计算后没有溢出,则尾数不断左移,同时指数减1,直到尾数为格式化数;如果这个过程中,指数小于机器能表达的最小数,则将结果置”机器零”,这种情况称为下溢;
举个栗子
比如:1000+119=?
用浮点数运算来算的话,1000可以为
1.0∗1031.0∗103
119可以为:
0.119∗1030.119∗103
1.0和0.119为尾数
,10为基数
,3为指数
注意:如果要2个浮点数相加,那么要保证他们的指数和基数相同。
尾数相加:1.0+0.119=1.119,再加上基数和指数,那么答案是:
1.119∗1031.119∗103
注意:尾数相加后,第一位数必须为1,不然就需要进行格式化。
比如:0.119*10^3,这个第一位是0,是不允许的,所以我们要进行格式化:1.119*10^2,这样才是允许的。