首页
学习
活动
专区
圈层
工具
发布

【软考学习3】数据表示——浮点数计算 + 单精度浮点数IEEE754计算

浮点数计算在软考中的考查形式一般为选择题,要求选择正确的或者错误的是什么,所以需要学习浮点数的基本运算流程。...另外在本科《计算机组成原理》中还学过 IEEE754单精度 浮点数运算,所以一块复习。...所以我们要进行对阶操作,而且是小阶向大阶对齐(为了避免计算后的结果格式化)。...---- 二、尾数计算 在进行 A + B 的计算中,因为 B 的阶乘(8)要小于 A 的阶乘(9),所以临时将 B 的数值改为 0.1056 x 10^9。...最后再套上阶乘,结果就是 1.179 x 10 ^9,计算完毕。 ---- 三、IEEE754 单精度浮点数运算 IEEE754 单精度浮点数运算可以解决浮点数进制转换的问题,具体流程如下图所示。

1.2K10

双精度,单精度和半精度

浮点数是计算机上最常用的数据类型之一,有些语言甚至数值只有浮点型(Perl,Lua同学别跑,说的就是你)。 常用的浮点数有双精度和单精度。除此之外,还有一种叫半精度的东东。...双精度64位,单精度32位,半精度自然是16位了。 半精度是英伟达在2002年搞出来的,双精度和单精度是为了计算,而半精度更多是为了降低数据传输和存储成本。...单精度浮点数: ? 半精度浮点数: ? 它们都分成3部分,符号位,指数和尾数。不同精度只不过是指数位和尾数位的长度不一样。...解析一个浮点数就5条规则: 如果指数位全零,尾数位是全零,那就表示0 如果指数位全零,尾数位是非零,就表示一个很小的数(subnormal),计算方式 (−1)^signbit × 2^−126 × 0....fractionbits 如果指数位全是1,尾数位是全零,表示正负无穷 如果指数位全是1,尾数位是非零,表示不是一个数NAN 剩下的计算方式为 (−1)^signbit × 2^(exponentbits

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

    单精度浮点数误差与消除方法

    技术背景 一个比较容易理解的概念,我们在做计算的过程中,很多时候都要做截断。不同精度的混合计算之间也会有截断,就比如一个float32单精度浮点数,符号占1位,指数占8位,尾数占23位。...那么问题就出现了,如果把一个双精度的浮点数转换成一个单精度的浮点数,就相当于舍弃了9位的有效数字,这就是做了一个截断。在一些特定的计算场景中,这种截断误差有可能会被累积,最终导致结果的错误。...可以看到,在使用了Kahan求和公式之后,虽然还是使用的float32单精度浮点数,但其实结果精度已经比普通的单精度计算高了两个量级。...总结概要 在使用浮点数计算时,尤其是在使用AI框架的过程中,我们往往使用的是float32单精度浮点数,这也跟GPU的硬件架构有关系。...但是使用单精度浮点数的过程中,务必要考虑到累加误差和大数吃小数的问题,这两个问题在长时间的迭代过程中,有可能会直接导致计算结果就是错误的。

    1.6K10

    单精度浮点数的取值,表示以及相关

    单精度浮点数可以表示1.175 * 10-38(1.00…0×2^-126)的数据而不损失精度。 0-00000001-00000000000000000000001(22个0,最后一位是1) ?...表示方式 如果指数位全零,尾数位是全零,那就表示0 如果指数位全零,尾数位是非零,就表示一个很小的数(subnormal),计算方式 (−1)^signbit × 2^−126 × 0.fractionbits...fractionbits,应该是为了和阶码是-126的时候做出区分,其实也就是比-126的时候能表示的数更小了) 如果指数位全是1,尾数位是全零,表示正负无穷 如果指数位全是1,尾数位是非零,表示不是一个数NAN 剩下的计算方式为...ps:为什么为什么用127做偏置而不是128:据说是为了让数的表示范围对称( 原文 ),但是感觉比较牵强而且也不比用128时对称 半精度与单精度的转换 主要是最近在研究f16和f32的转换才看了上面一堆东西

    4.8K20

    【Java】实现计算器

    快速概览 1.励志成为大家的作业侠的小说明 2.实现计算器源码与相应注释 大家好呀,好久没发文了,一没发文就一天n个小朋友取关我(求求了,别取关了,因为我在为你们闭关修炼呀!!!)...现在已经发布的源码有: 【Java】实现绘图板 【C++】图书管理系统 大家去看看需要或者有什么问题就可以私聊我嗷!!!...进入今天的正题,实现计算器 实现功能 可以退位 进行连续的简单的表达式运算等 实现方法: awt 利用栈将中缀表达式转化为后缀表达式 利用栈对后缀表达式进行计算 实现效果如下: 通过使用AWT来完成计算器界面开发...实现代码如下:含部分注释 import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener...String.valueOf(b); return result; } public String calculateResult(String str[])//进行后缀表达式的计算

    39310

    Java 通过向量,计算移动方向,计算线段角度等

    在计算机科学中,向量通常用于表示物体的位置、速度和加速度等。在Java中,可以使用坐标系中两点之间的差异来计算向量之间的距离。...我们可以通过计算线段的向量,来判断手指(鼠标)在屏幕中的移动方向。速度等信息。可以通过向量计算两条线段的夹角度数等。 2. 获取线段的向量 向量可以进行加法和减法运算。...计算线段和X轴的角度 假如,我们有两个任意的坐标点,需要计算这两个坐标点连接的线段与X轴的夹角。...我们如果结合手机或者电脑屏幕的坐标来计算。 简单理解就是,点p1在p2的上方,那么计算的就是从x轴出发顺时针的角度,也就是0~180° 而点p1在点p2的下方,那么计算的就是从x轴出发,逆时针的角度。...通过向量和角度,计算两个线条的夹角 在前面,我们计算了如何获取线条和X轴的夹角。我们如果有两条线段,那么如何获取这两条线段的夹角呢?

    2K40

    Spark实时流计算Java案例

    现在,网上基于spark的代码基本上都是Scala,很多书上也都是基于Scala,没办法,谁叫spark是Scala写出来的了,但是我现在还没系统的学习Scala,所以只能用java写spark程序了,...spark支持java,而且Scala也基于JVM,不说了,直接上代码 这是官网上给出的例子,大数据学习中经典案例单词计数 在linux下一个终端 输入 $ nc -lk 9999 然后运行下面的代码...package com.tg.spark.stream; import java.util.Arrays; import org.apache.spark.*; import org.apache.spark.api.java.function...并且hdfs上也可以看到通过计算生成的实时文件 第二个案例是,不是通过socketTextStream套接字,而是直接通过hdfs上的某个文件目录来作为输入数据源 package com.tg.spark.stream...; import java.util.Arrays; import org.apache.spark.*; import org.apache.spark.api.java.function.*;

    3.4K60

    关于java中对数的计算

    最近为了计算文档间的相关性需要用到对数的计算,在网上找到下面的方法: 其中的关键是:1 java标准包提供了自然对数的计算方法,2 其他的对数计算可以转换为自然对数的计算。...后来搜索到这个连接:http://www.cs.utsa.edu/~wagner/laws/ALogs.html 还是人家有专业精神: 下面是他的描述:  Java supplies a function...——double java.lang.Math.log(double)。...很遗憾,我们还没有办法计算以10为底或以2为底的对数。     但是它们却是在计算对数时用的最多的。    ...要想解决这个问题,我们就要回想曾经在学校里学过的数学和对数方程: logx(y) =loge(x) / loge(y)   这只需一段简单的Java程序来实现:   public class Logarithm

    2.4K30
    领券