首页 > 编程语言 >《程序是怎样跑起来的》第三章

《程序是怎样跑起来的》第三章

时间:2024-02-04 18:00:47浏览次数:29  
标签:第三章 二进制 浮点数 程序 尾数 怎样 部分 十进制 小数

第三章:计算机进行小数运算时出错的原因

二进制数0.1,用十进制数表示的话是多少
0.5
用小数点后3位的二进制数,能表示十进制数0.625吗
能表示(即0.101)
将小数分为符号、尾数、基数、指数4部分进行表现的形式称为什么
浮点数 “符号 尾数 x 基数的指数次幂”
二进制数的基数是多少
2
通过把0作为数值范围的中间值,从而在不使用符号位的情况下来表示负数的表示方法称为什么
EXCESS系统表现(例如把01111111看作是0的话,比这个数小1 的01111110就是-1)
10101100.01010011这个二进制数,用十六进制数表示的话是多少
AC.53
3.1 将0.1累加100次也得不到10

3.2 用二进制数表示小数

小数点后面的二进制转化为十进制数,不再赘述。
3.3 计算机运算出错的原因

有一些十进制的小数无法转化成二进制数(例如:0.1)
原因:小数点后面四位用二进制数表示时的数值范围为0.0000 ~ 0.1111。因此,这里只能表示0.5,0.25,0.125,0.0625这四个二进制小数点后面的位权组合组成的小数。
3.4 什么是浮点数

像1011.0011这样的带小数点的表现形式,完全是纸面上二进制数表现行式,在计算机内部是无法使用的。
浮点数:用符号,尾数,基数和指数这四个部分来表示的小数。
(其中因为计算机内部使用的是二进制数,所以基数自然就是2.因此,实际的数据往往不考虑基数,只用符号、尾数、指数这三个部分即可表示浮点数)
符号部分:用一个数据位表示数值的符号
数据的大小由尾数部分和指数部分来表示
尾数部分:用的是将小数点前面的值固定为1的正则表达式
指数部分:用的是EXCESS系统表现
3.5 正则表达式和EXCESS系统

尾数部分使用正则表达式,可以将表现形式多样的浮点数统一为一种表现行式。

十进制数的浮点数应该遵循“小数点前面是0,小数点后面第一位不能是0”这样的规则

二进制中使用的是:“将小数点前面的值固定为1的正则表达式”
(将二进制数表示的小数左移或者右移(这里指逻辑移位,因为符号位是独立的)数次后,整数部分的第一位变为1,第二位之后都变为0(这样是为了消除第2位以上的数位),而且第1位的1在实际的数据中不保存。由于第一位必须是1,因此,省略该部分后就省略了一个数据位,从而也就可以表示更多的数据范围)

下图是单精度浮点数尾数部分正则表达式的举例


指数部分中使用的EXCESS系统:
是为了表示负数时不使用符号位
含义:通过将指数部分表示范围的中间值设置为0,使得负数不需要用符号来表示
(例如:当指数部分是8位单精度浮点数时,最大值11111111=255的1/2,即01111111=127(小数部分舍弃)来表示0.同理,指数部分是11位双精度浮点数时,11111111111=2047的1/2,即01111111111=1023(小数部分舍弃)表示的是0)

3.6 在实际的程序中进行确认

举例1:0.75
0-01111110-10000000000000000000000(加-是为了区分符号部分、指数部分、尾数部分)
符号部分0表示该数是正数
指数部分01111110是十进制的126,在EXCESS系统中表现的是-1
尾数部分10000000000000000000000实际上是1.10000000000000000000000,将1.10000000000000000000000转化为十进制数是1x20+1x2-1=1.5
所以最后的结果就是1.5 x 2^-1 = 0.75

举例2:0.1
0-01111011-10011001100110011001101
符号部分0表示该数是正数
指数部分01111110是十进制的123,在EXCESS系统中表现的是-4
尾数部分10011001100110011001101实际上是1.10011001100110011001101,将1.10011001100110011001101转化为十进制数是M(字母表示)
所以最后的结果就是M x 2^-4 != 0.1

3.7 如何避免计算机计算出错

一:回避
根据程序目的不同,有时一些微小的偏差不会造成什么问题

二:将小数转化为正数
进行正数运算只要不超过可处理的数值范围,就一定不会出现问题

BCD编码也是一种使用二进制表示十进制的方法
(用4位来表示0-9的一位数字)
(在设计财务计算等不允许出现误差的情况,一定要将小数转化成整数或者BCD方法,以确保最终得到准确的数值)

3.8 二进制数和十六进制数

用十六进制来表示二进制小数时,小数点后的二进制数的4位同样相当于十六进制的1位。不够4位时用0填补低位即可。

标签:第三章,二进制,浮点数,程序,尾数,怎样,部分,十进制,小数
From: https://www.cnblogs.com/wcpp/p/18006711

相关文章

  • 在Windows 10中,C:\Users\Administrator\AppData目录下存储了当前用户(Administrator
    在Windows10中,C:\Users\Administrator\AppData目录下存储了当前用户(Administrator)的应用程序数据。该目录包含了许多子文件夹,每个子文件夹有不同的功能和用途。以下是一些常见的子文件夹:Local:用于存储应用程序的本地数据,如缓存文件、临时文件等。Roaming:用于存储应用程序的配......
  • 《程序是怎样跑起来的》第二章读后感
    第二章的题目是数据是用二进制表示的,我从第二章了解到了计算机的内部结构基于集成电路,这些元件的针脚只能有两种状态:0V和5V。由于这种二元特性,计算机采用二进制系统来处理和存储数据。在二进制中,8个二进制位组成一个字节,而字节是计算机信息处理的基本单位。二进制数与十进制数一......
  • 在PowerShell中管理Windows映像主要涉及到DISM模块的Cmdlets。这些Cmdlets提供了一系
    在PowerShell中管理Windows映像主要涉及到DISM模块的Cmdlets。这些Cmdlets提供了一系列功能,包括挂载(加载)、卸载(卸下)映像,添加或删除驱动程序,应用更新等。以下是一些常用的Cmdlets和它们的参数,以及相应的实例。常用CmdletsMount-WindowsImage-ImagePath:指定WIM文件的路径。-I......
  • C++多线程 第三章 在线程间共享数据
    第三章在线程间共享数据共享数据基本问题如果所有共享数据都只读,那就没有问题.不变量(invariants):对特定数据结构总为真的语句.例如:"该变量表示线程数量."修改线程之间共享数据的一个常见潜在问题就是破坏不变量.竞争条件(racecondition):线程竞争执行各自的操作,导......
  • 读《程序是怎样跑起来的》第二章有感
    第二章的题目——数据是用二进制表示的,作者深入剖析了数据的二进制表示方法。首先我了解到为什么用二进制数表示计算机信息的原因,计算机内部由IC这种电子部件构成的,IC是有不同的形状,并且有引脚在IC内部,所有引脚只有0V和5V两个状态。IC的一个引脚只能表示两种状态,这个特性决定计算......
  • 《程序是怎样跑起来的》第四章读后感
    在阅读了《程序是怎样跑起来的》的第四章后,我对计算机程序的运行过程有了更深入的理解。这一章主要介绍了算法和数据结构,以及它们在程序设计中的重要性。通过学习,我认识到算法是解决问题的步骤和方法,而数据结构则是组织和存储数据的方式。高效的算法和合适的数据结构能够提高程序......
  • 如何通过APPID查询微信小程序,看看那些appid都是谁
    通过统计看到一些跳转来源的appid,有时候很想知道这些appid都是谁,做到心里有数,但现在appid反查小程序的信息,官方没有开放的接口。目前大多数的方案是:通过自己做一个小程序页面,在这个页面去调用这个appid,微信小程序会提示是否打开“xxx”小程序,在这里可以看到。在公众号去绑......
  • 《程序是怎样跑起来的》第二章“数据是用二进制数表示的”
    在读过本书第二章后,我也对二进制数有了更深刻的印象,2.1向我们解释了为什么用二进制数表示计算机信息的原因,介绍了计算机的一种电子部件IC,也介绍了计算机处理信息的最小单位——位,2.2讲述了什么是二进制数,其中提到了一种思维方式,2.3讲述了移位运算和乘除运算的关系以及什么是移位运......
  • 《程序是怎么跑起来的》第三章观后感
    我是计应232的学生张凯源,今天来分享《程序是怎样跑起来的》第三章观后感。这一章讲了计算机计算小数时出错的原因,了解到了为什么万能的计算机在运算时会出现错误,计算机之所以叫"计算"机就是因为发明它主要是用来计算的,"计算"当然是它的特长,在大家的印象中,计算一定是非常准确的。......
  • 如何利用 AI 做乘法,制作一款龙年贺卡小程序
    2022年底AIGC的出现,让2023年成为通用人工智能元年。这是最好的时代,利用AI,之前仅能存在幻想中的事物落地成现实。只需要寥寥几句话,就可以描绘一张斑斓的画,真实而又丰富的画。目前AI生图的大模型不多,大名鼎鼎的有Midjourney,不过它闭源,并且国内用户使用不方便。StableD......