首页 > 编程语言 >计算机算法中的数字表示法——定点数

计算机算法中的数字表示法——定点数

时间:2024-05-30 21:33:24浏览次数:17  
标签:表示 数字 小数点 整数 表示法 算法 定点数 小数

目录

1.前言

前面一篇文章讲了计算机中的数字表示法:原码、补码和反码,这一篇文章开始进行定点数的讲解。

2.什么是定点数

定点数,从字面意思上理解就是小数点位置固定,如下图所示:

定点数表示法

数字既包括整数,又包括小数,而小数的精度范围要比整数大得多,所以如果我们想在计算机中,既能表示整数,也能表示小数,关键就在于这个小数点如何表示?

于是人们想出一种方法,即约定计算机中小数点的位置,且这个位置固定不变,小数点前、后的数字,分别用二进制表示,然后组合起来就可以把这个数字在计算机中存储起来,这种表示方式叫做「定点」表示法,用这种方法表示的数字叫做「定点数」。

3.定点数如何去表示数字

定点数如果要表示整数或小数,分为以下三种情况:

1.纯整数:例如整数88,小数点其实在最后一位,所以忽略不写
2.纯小数:例如:0.1234,小数点固定在最高位
3.整数+小数:例如1.23、10.24,小数点在指定某个位置

对于纯整数和纯小数,小数点固定在最低位和最高位,只需要把整数部分、小数部分,分别按照十进制转二进制的规则,分别转换即可。下面以8bit为例:

纯整数定点数表示(从右到左,第N位二进制为 2 N − 1 2^{N-1} 2N−1):
8 8 ( D ) = 0101100 0 ( B ) ‬ 88_{(D)} = 01011000_{(B)}‬ 88(D)​=01011000(B)​‬
纯小数定点数表示(从左到右,第N位二进制为 1 / 2 N 1/2^N 1/2N):
0.62 5 ( D ) = 0.50 0 ( D ) + 0.12 5 ( D ) = 0.0010000 0 ( B ) + ‬ 0.1000000 0 ( B ) = 0.1010000 0 ( B ) 0.625_{(D)} = 0.500_{(D)} + 0.125_{(D)}= 0.00100000_{(B)} + ‬0.10000000_{(B)}=0.10100000_{(B)} 0.625(D)​=0.500(D)​+0.125(D)​=0.00100000(B)​+‬0.10000000(B)​=0.10100000(B)​
可以看到表示小数的时候并能够全精度的表示一切数值,8bit纯小数定点数的精度只到 1 / 2 8 1/2^8 1/28,超过精度外的数字需要进行舍取。

定点数表示整数+小数:

而对于整数 + 小数的情况,用定点表示时,需要约定小数点的位置,才能在计算机中表示。以 8 位为例,我们约定从高位开始,1位符号位,4位整数位,后3位表示小数部分。

对于数字 -1.5 用定点数表示就是这样:

首先表示数字正的1.5,即原码:
1. 5 ( D ) = 0000110 0 ( B ) 1.5_{(D)} = 00001 100_{(B)} 1.5(D)​=00001100(B)​
符号位不变,其余各位取反,+1得:
0111001 1 ( B ) + 1 = 0111010 0 ( B ) 01110 011_{(B)} + 1 = 01110 100_{(B)} 01110011(B)​+1=01110100(B)​
然后对于负数,符号位填充为"1"得数字 -1.5 用定点数表示:
− 1. 5 ( D ) = 1111010 0 ( B ) -1.5_{(D)} = 11110 100_{(B)} −1.5(D)​=11110100(B)​

表示步骤如下:

1.在有限的 bit 宽度下,先约定小数点的位置,一般取高位为符号位
2.先不管符号,整数部分和小数部分,分别转换为二进制表示
3.对于正数,两部分二进制组合起来,即是结果
4.对于负数,除符号位进行取反,然后+1,符号位填充"1"

4.定点数表示法的局限性

前面我们约定从高位开始,1位符号位,4位整数位,后3位表示小数部分。这样做,整数部分的二进制最大值只能是 1111,即十进制的 15,加上符号只能表示-16~+15,小数部分的二进制最大只能表示 0.111,即十进制的 0.875。

如果我们想要表示更大范围的值,怎么办?

1.扩大 bit 的宽度:例如使用 2 个字节、4 个字节,这样整数部分和小数部分宽度增加,表示范围也就变大了
2.改变小数点的位置:小数点向后移动,整个数字范围就会扩大,但是小数部分的精度就会越来越低,没有办法表示类似 0.00001 这种高精度的值

由此我们发现,不管如何约定小数点的位置,都会存在以下问题:

1.数值的表示范围有限(小数点越靠左,整个数值范围越小)
2.数值的精度范围有限(小数点越靠右,数值精度越低)

所以,定点表示法的主要问题是它不能有效地表示非常大或非常小的数。为了解决这个问题,人们发明了浮点表示法,其中小数点的位置是浮动的,可以根据需要移动以表示不同大小的数。下一篇文章来讲浮点数。

微信公众号含更多FPGA相关源码:
在这里插入图片描述

标签:表示,数字,小数点,整数,表示法,算法,定点数,小数
From: https://blog.csdn.net/xxqlover/article/details/139334934

相关文章

  • 比亚迪算法岗面试,问的贼细!
    节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。总结链接如下:《大模型面试宝典》(20......
  • 程序分享--常见算法/编程面试题:不使用额外数组空间,原地移除数组中给定元素
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自我介绍》, 《做好面试准备,迎接2024金三银四》。或关注博主免费专栏【程序......
  • OSPF状态机+SPF算法
      OSPF状态机1.点到点网络类型   down-->init-->(前提为可以建立邻接)exstart——>exchange-->若查看邻接的DBD目录后发现不用进行LSA直接进入ful。若查看后需要进行查询、应答先进入loading,在查询应答完后再进入fuIl:2.MA网络类型   down-->init-->2way-......
  • 优化Python中的数据结构与算法(指南)
    ......
  • 代码随想录算法训练营第四十四天|01 背包、动态规划:01背包理论基础(滚动数组)、416. 分
    01背包文档讲解:代码随想录题目链接:46.携带研究材料(第六期模拟笔试)有n件物品和一个最多能背重量为w的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 暴力解法:每个物品都有放与不放两种状态......
  • 代码随想录算法训练营Day55 | 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总
    本文目录583.两个字符串的删除操作做题看文章72.编辑距离做题看文章编辑距离总结篇以往忽略的知识点小结个人体会583.两个字符串的删除操作代码随想录:583.两个字符串的删除操作Leetcode:583.两个字符串的删除操作做题找出最长公共子序列,然后用两个字符串的......
  • 大模型算法办备案全网最详细说明(+附件)
    ​已成功备案产品(近130家,不包括审核中的)一、大模型算法备案的强制性二、生成式人工智能(大语言模型)安全评估要点三、大模型备案必备材料+重点说明四、大模型备案填报流程五、大模型备案时间成本对比六、备案建议附录、过程性材料关于备案咨询不论最终是找我们做备案,......
  • 基于k-means算法的用户进行聚类项目(免费提供全部源码)
    下载地址如下:基于k-means算法的用户进行聚类项目(免费提供全部源码)资源-CSDN文库项目介绍背景在大数据时代,用户数据的收集和分析变得尤为重要。企业通过分析用户行为数据,可以更好地理解客户需求,提升服务质量,从而在市场竞争中占据有利位置。然而,随着数据量的增大和数据种类的......
  • 粒子群算法及蜂群算法求多维函数极值对比
    1.粒子群算法    1.1粒子群算法简单介绍    粒子群优化算法源于对鸟群活动的研究。20世纪70年代许多学者对鸟群的群体性活动进行了深入研究。生物学家Reynolds提出了Boids模型,用来模拟鸟群聚集飞行的行为。在这个模型中每个个体都遵守三条规则:避免碰......
  • 【智能算法驱动的光子学设计与应用】
    在智能算法与光子学设计融合的背景下,科研的边界持续扩展,创新成果不断涌现。从理论模型的整合到光学现象的复杂模拟,从数据驱动的探索到光场的智能分析,智能算法正以前所未有的动力推动光子学领域的革新。据调查,目前在Nature和Science杂志上发表的智能算法与光子学结合的研究......