浮点数与移码

浮点数是什么

  浮点数就是小数点可以任意浮动的数字。
  因为在计算机的机器语言中,只有二进制,机器语言只能识别0和1。所以,计算机也是不可能存储小数的,那计算机如何表示小数呢,采用一般采用指数表示,如下图所示。
在这里插入图片描述
  但是指数表示的话表示方法也不尽相同,不停表示方法小数点的位置也不是固定的,因此我们称计算机中这种指数形式的表示的数为浮点数。

浮点数的表示与规定

  相同的小数可以使用不同的存储方法和规定,这无疑添加了计算和存储的难度,为了方便计算和存储,人们制定了统一的表示方法,其中最流行的就是IEEE754 标准

浮点数的规定(IEEE754 标准)

  已知小数可以表示成N=M×RE的形式
  如12.345=1.2345×101。
  其中M(Mantissa)被称为浮点数的 尾数 ,R(Radix)被称为阶码的基数 ,E(Exponent)被称为阶的 阶码 。计算机中一般规定R为2、8或16,是一个确定的常数,不需要在浮点数中明确表示出来。
  因此,在已知标准下,要表示浮点数,
  一是要给出尾数M的值,通常用定点小数形式表示,它决定了浮点数的表示精度。。
  二是要给出阶码,通常用定点整数形式表示,它指出的是小数点在数据中的位置,决定了浮点数的表示范围。
为了提高数据的表示精度同时保证数据表示的唯一性,需要对浮点数做规格化处理。即要求尾数域的最高有效位应为1,称满足这种表示要求的浮点数为规格化表示:把不满足这一表示要求的尾数,变成满足这一要求的尾数的操作过程,叫作浮点数的规格化处理,通过尾数移位和修改阶码实现。
在单精度浮点数中 符号占一位,阶码占8位,尾数占23位
在这里插入图片描述
在双精度浮点数中
在这里插入图片描述

比如,二进制原码的规格化数的表现形式:(0正1负)
正数 0.1xxxxxx
负数 1.1xxxxxx
注意,尾数的最高位始终是1,因此我们完全可以省略掉该位。至此,我们引入IEEE754 标准,该标准约束了浮点数的大部分使用设置:(尾数用原码;阶码用“移码”;基为2)。当然,在取回这样的浮点数到运算器执行运算时,必须先恢复该隐藏位。

浮点数的表示范围(IEE7标准瞎)

在这里插入图片描述
至于具体怎么算的,阶码,尾数越大数越大,而阶码和尾数的位数都是确定的,基码默认为2.不需要我写出来了吧。

阶码用移码表示

移码:就是补码的符号位取反。

优点:
  移码是对于某一个系列或集合的数使它们都映射到正数轴上去,即在数轴上把数都统一往右移动n位,使得所有的数都不为负数。加上偏移量的所有值都大于等于0。这里的话,由于都不为负数,所以我们直接可以由移码的表示形式看出对应数值的大小,
  阶码经常做的操作是比较大小和加减,补码是要变换成原码再比较的,所以对于表示阶码,移码是完美的选择(这里是把移码当做无符号数来比较大小的,而不必考虑符号,方便比较!)我认为这是最主要的原因!
  用移码表示的话,简化了对于“0”的判断,即移码的特殊值(0和max)被检验比较容易。
  用移码来表示阶码的话可以提高表示数据的精度。如果不是采用移码来表示阶码的话,那么阶码就会出现负值,这样的话当需要把该数据转换成非阶码浮点数据时我们将就需要对尾数进行左移(做乘法运算),这样的话我们会发现最先移去的是尾数的高位,因此这种方法不利于数据的精度表示。而对于才用移码表示阶码的话,我们在转换时是做右移操作,这样最先移去的是最低位,这样比较好地保持了数据的精度。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值