美文网首页
二进制和精度

二进制和精度

作者: xiaoluo | 来源:发表于2022-06-30 01:11 被阅读0次

十进制转化为二进制

整数部分:110101 = 25 + 24 + 22 + 20 = 32 + 16 + 4 + 1 = 53

小数部分:将前面的部分小数部分不断乘以2并记录整数部分,从小数点开始往右移动。

0.7 × 2 = 0.4 + 1
0.4 × 2 = 0.8 + 0
0.8 × 2 = 0.6 + 1
0.6 × 2 = 0.2 + 1
0.2 × 2 = 0.4 + 0
0.4 × 2 = 0.8 + 0
......
(0.7)10 = (0.1011001100....)2 = (0.1\overline{\text{0110}})2

所以(53.7)10 = (110101. (0.1\overline{\text{0110}}))2

二进制转化为十进制

整数部分

(10101)2
1 × 24 + 0 × 23 ••• = (21)10

小数部分(有限的以2为基的展开)
(0.1011)2 = \frac 12 + \frac 18+ \frac 116

实数的浮点表示

IEEE 754 标准包含了一组实数的二进制表示,一个浮点数字包含三部分:

  • 符号( + - )
  • 尾数(一串有效数字)
  • 指数
浮点数的三种精度

标准化的IEEE浮点数表示为
+-1.bbbb...b * 2p
b 的取值是0或者是1,p是一个M位的二进制数

当一个二进制数用一个标准浮点数表示的时候,它被称为左对齐。这意味着左边的一个数位1被平移到小数点的左边,平移通过指数的变化进行补偿。比如9对应的1001保存为
+1.001 * 23

机器精度的取舍

机器精度对应的数字,记作εmach,它代表的是1和比1大的最小浮点数之间的距离,对于IEEE双精度浮点表示。
εmach = 2-52

机器必须以某种方式对数字进行截断,并且在这个过程中仅仅引入较小的误差,称为截断。通过简单丢弃在末端之外的数位来实现,也就是说超过52位以后的数字直接被丢掉。

另外一种方式是舍入,具体是说在双精度浮点数字中,小数点右边的53位是一个重要的数位,是1 则52位加1,0,没有变化。

判断第 x 位状态是否开启(x 以 0 开始,下同):
status & (1 << x) == 0 // bt ( bit test )
打开第 x 位
status |= 1 << x // bts ( bit test and set )
重置第 x 位
status &= ~(1 << x) // btr ( bit test and reset )
取反第 x 位
status ^= 1 << x // btc ( bit test and complement )

相关文章

  • 二进制和精度

    十进制转化为二进制 整数部分:110101 = 25 + 24 + 22 + 20 = 32 + 16 + 4 ...

  • [PHP] - 编译参数 --enable-bcmath

    翻译 对于任意精度数学,PHP提供二进制计算器,它支持任何大小和精度的数字,最高可达2147483647(或0x7...

  • PHP BC数学函数

    对于任意精度的数学,PHP提供了支持用字符串表示的任意大小和精度的数字的二进制计算,最多为2147483647-1...

  • Java:利用BigDecimal类巧妙处理Double类型精度

    本篇要点 简单描述浮点数十进制转二进制精度丢失的原因。 介绍几种创建BigDecimal方式的区别。 整理了高精度...

  • JS学习笔记

    1.JS在处理小数的四则运算时较容易损失精度。 原因:二进制和十进制相互转换损失精度解决办法:转换成整数运算 2....

  • golang比较浮点数是否相等

    由于小数二进制和十进制转换的时候,会有精度丢失的问题,所以我们在比较浮点数是否相等,指的是在一定精度范围内的两个浮...

  • double与float

    单精度与双精度什么区别 根据国际标准IEEE 754,任意一个二进制浮点数V可以表示成下面的形式: (-1)^s表...

  • javascript 精度丢失问题

    原因这和计算机存储机制有关系,在计算机中,存储双精度浮点数的时候,会把十进制转成二进制,再根据计算机存储二进制的规...

  • java基础-浮点数陷阱

    计算机的数值采用的是二进制形式存储。根据IEEE754标准,单精度浮点数为32位: 双精度浮点数为64位: 0.9...

  • 深入浅出iOS浮点数精度问题 (上)

    目录 一,浮点数精度丢失? 二,整数的二进制表示 三,浮点数的二进制表示 四,iEEE 754浮点数的手动转换 五...

网友评论

      本文标题:二进制和精度

      本文链接:https://www.haomeiwen.com/subject/onupvrtx.html