《程序是怎样跑起来的》——第三章:计算机进行小数运算时出错的原因

我们都知道,二进制转化成十进制的方法:
将各数位数值和位权相乘

十进制转二进制的方法:
在这里插入图片描述
十进制小数部分转二进制的方法:
在这里插入图片描述
而有些十进制的小数无法转化成二进制数:
如十进制0.1 转化成 二进制:0.000111001100(1100)循环
就像无法用10进制表示1/3一样
这就是小数运算出错的根本原因

浮点数

浮点数的表示形式:± m * n^e
± : 符号位
m ; 尾数
n :基数 (对计算机来说基数就是2)
e:指数

在这里插入图片描述
双精度浮点数比单精度浮点数更精确的原因在于:其指数部分和尾数部分的位数更多

避免出错的方法

1.回避策略:无视这些错位。对大多数情况来说,微小的误差完全可以忽略掉。

2.把小数换成正数来计算。把小数扩大N倍编程整数,再把结果除以相应参数

二进制数和十六进制数

符号表示:
二进制 B
十六进制 0x
八进制 0
十进制 D(不写也可以,因为是默认十进制)

我们都知道,二进制转十六进制是4位取1
也就是说,通过十六进制数,二进制的位数能缩短至原来的1/4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值