怎样用计算机表示分数,计算机中的分数如何表示?

表示比电脑上的整数其它数量的最常见的方式是通过使用浮点,特别是IEEE 754浮点。正如您可能熟悉的那样,整数通常用硬件位来表示,以表示二进制数字,因此物理属性(例如电荷或缺少电荷,高电压或低电压,单向或双向磁场)用于代表比特(0和1),并且这些比特序列使得一个数字(如11010),这是我们在二进制表示一个号码翻译(11010 为16 + 8 + 2 = 26)。我们通常不会想到它,但是这个数字右边有一个“小数点”:“11010”。当我们在它的右边有更多位时,我们只需要小数点,它代表分数。例如,11010.11 是16 + 8 + 2 + 1/2 + 1/4 = 26.75。要从整数变为浮点,我们使小数点浮动。除了表示数字的位外,我们还有一些附加位告诉我们在哪里放置小数点。

所以,我们可能有三个位,说010,说得清小数点去等位,说1101011,表示值。小数点位010可以表示将小数点移动到左边两个位置,将“1101011”改变为“11010.11”。

在单精度IEEE 754中,有一个符号位(即告诉我们+或 - ),八指数位,和23个值的比特(用于“有效数”或“部分”)。指数位的值0和255是特殊的。对于指数位的其他值,我们减去127以得到范围从-126(将小数点126位左移)到127(将小数点右移127位)的指数。除了我们稍微修改它们之外,有效位被解释为二进制数字:我们写“1”,然后是小数点,然后是有效数的23位,所以我们有类似“1.1101011000 ...”的内容。作为替代,你可以把它看作一个整数:“1”然后是23位,没有插入小数点,产生一个24位的二进制数字,但指数由一个额外的23进行调整(所以减去150而不是127) 。

在双精度IEEE 754中,有一个符号位,11个指数位和52个有效位。

还有其他浮点格式,这是不常见的。一些较老的使用十六进制作为基础(使用指数来表示四位而不是一位)。浮点格式的一个重要类型是十进制数,其中指数表示幂数为10.在十进制浮点数中,有效数可以是二进制整数,也可以是二进制编码的十进制数(其中每四位指示一个十进制数)或者它可以是一个混合(根据定制的方案,一组比特被用来指示少量的十进制数字)。

浮点数的一个重要特性是它们不能表示所有实数(当然,即使在有限范围内)甚至是所有有理数。这迫使数学运算将结果舍入为可表示的数字,这对于不熟悉浮点操作的人员来说不会造成问题。这个属性反过来成为十进制浮点的一个特性:它适用于通常用十进制操作的货币名称和其他人为关联的数字,因为大多数舍入错误可以通过小心使用十进制浮点来消除。科学家和数学家更喜欢与自然相关的或纯数字而不是受人为污染的数字,因此更倾向于使用二进制浮点数,因为它更为广泛,并且得到硬件的大力支持。

还有其他方法可以在计算机中表示非整数。另一种常见的方法是固定点。在固定点,一个比特序列,例如1101011,被解释为在一个已知的固定位置上的一个小数点。该职位将固定在对特定应用有用的职位。所以位1101011可以代表数字11010.11 。固定点的一个优点是可以用标准硬件轻松实现。要添加两个定点数字,我们只需将它们添加为整数即可。为了乘以两个定点数,我们把它们相乘,就好像它们是整数一样,但结果是小数点后面的位置是它的两倍,所以我们要么移位来调整它,要么写我们的代码,这样结果这些操作用小数点后的已知位数解释。一些处理器通过调整这种效果的乘法来支持固定点的指令。

数字也可以缩放为整数。例如,要使用美国货币,我们只需将美元数量乘以100,并用整数进行所有算术。小数点仅在显示最终结果时插入(并且在从人类读取数据时解释)。另一个常用缩放比例是将像素亮度(从0到1)乘以255,以使0到1之间的分数符合8位字节。

还有软件,以提供扩展精度(使用基本算术类型的几个单元以提供额外的精确度),或者任意精度的(使用的单元的数目动态根据需要提供尽可能多的精度)。与硬件支持的算术相比,此类软件速度非常慢,通常仅用于特殊用途。此外,扩展精度与浮点基本上具有相同的属性;只是舍入误差较小,没有消失。任意精度具有相同的缺陷,除了其动态精度可能允许您使误差足够小以至于您可以获得在必要的时间间隔内的最终结果(证明您已这样做)。

表示非整数的另一种方法是使用分数。您可以存储分子和分母,并以与在学校教授的方式大致相同的方式执行算术:乘以分子乘以分母。通过转换两个分数来添加公分母,然后添加分子。这种算法是有问题的,因为分母很快变大,所以你需要扩展精度或任意精度来管理它们。

您也可以用符号或复合表达式表示数字。例如,您可以将代表应用于数字2的平方根运算的数据结构存储为数字结构,而不是将两个平方根存储为数字值。执行任何操作(除此之外的最简单操作)需要使用非常复杂的软件管理表达式,组合它们,查找缩小等等。这种表示形式被用于特殊的数学软件,如Maple和Mathematica。

最后,你可以用任何你想要的方式表示数字。我们现代的处理器是通用计算设备,速度和存储容量都有限制,因此您可以编写代表数字串或数据结构或任何其他技术的算法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值