定点数(fixed-point number)
定义
定点数(fixed-point number)就是小数点位置固定的数,也就是说,小数点后面的位数是固定的,比如要记录一笔账目,这些账目的数字都不会超过100,就可以使用2位小数位定点数来记录,比如99.99,2.30,75.28;如果要更精确,可以使用3位小数位的定点数来记录,比如7.668,38.235。
存储方式
定点数的存储方式很简单,通常的方式就是对每一个十进制数进行BCD编码,然后加上一个额外的符号位,0表示正数,1表示负数。由于需要使用整数个字节数来存储定点数,所以依据不同情形,符号位可能使用4bit编码,也可能使用8bit编码。如果用4bit编码符号位,加上数值位的bit数刚好是整数字节,那么就用4bit编码编码符号位,否则就用8bit编码符号位。比如,对-9.99编码,由于使用BCD编码9.99需要1.5字节,那么使用4bit编码符号位刚好就可以凑成2字节,编码结果如下: 1001 1001 1001;如果对-99.99编码,由于使用BCD编码99.99刚好是2字节,那么对符号位就使用8bit编码,编码结果如下:0000 0001 1001 1001 1001 1001(蓝色部分表示符号位编码,红色部分表示数值位编码)。
注意对定点数的编码,不需要对小数点位置进行编码,因为小数点位置是固定的(对同一定点数表示方式来说)。
优缺点
定点数的优点就是可以精确表示想要表示的数值,不会像浮点数一样计算机内部无法精确的表示一些数值,比如要表示[0,100)之间的任何两位小数,定点数都能精确表示;
定点数的缺点就是不适用于表示特别大或者特别小的数值,比如要表示[0.00000000026,490000000000)之间的任何11位小数,那么就需要使用的字节高达12个(算上符号位)。
参考资料:
Code:The Hidden Language of Computer Hardware and Software第23章
定点数(fixed-point number)的更多相关文章
- hive Tutorial
hive数据单元按照粒度从大到小,依次为 1.数据库database:可以用show databases; 命令查看所有的数据库,并用use d1; 命令来选中d1数据库,接下来就可以操作d1数据库中 ...
- Java浮点数float,bigdecimal和double精确计算的精度误差问题总结
(转)Java浮点数float,bigdecimal和double精确计算的精度误差问题总结 1.float整数计算误差 案例:会员积分字段采用float类型,导致计算会员积分时,7位整数的数据计算结 ...
- float与double的范围和精度(摘录)
什么是浮点数在计算机系统的发展过程中,曾经提出过多种方法表达实数.典型的比如相对于浮点数的定点数(Fixed Point Number).在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置. ...
- 项目中BigDecimal与Double使用场景
金额要用BigDecimal 金额计算不能用doube!!!! 金额计算必须用BigDecimal,下面对比一下用double 跟BigDecimal的区别.先看一个小例子: 请看题: 示例1 问, ...
- MySQL中Decimal类型和Float Double的区别 & BigDecimal与Double使用场景
MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形 ...
- 【转】浮点数与IEEE 754
http://www.cnblogs.com/kingwolfofsky/archive/2011/07/21/2112299.html 浮点数 1. 什么是浮点数 在计算机系统的发展过程中,曾经 ...
- STM32 USART 波特率计算
The baud rate for the receiver and transmitter (Rx and Tx) are both set to the same value as program ...
- Wind Simulation in 'God of War'(GDC2019 战神4风力场模拟)
Wind Simulation in 'God of War'(GDC2019) 战神4中的风力场模拟 这次带来的分享的主题是,圣莫妮卡工作室他们在战神4中关于GPU模拟风力场. 演讲者Rupert ...
- 【译】Unity3D Shader 新手教程(1/6)
本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 刚开始接触Unity3D Shader编程时,你会发现有关shader的文档相当散,这也造成初学者对Unity3D ...
- Android系统build.prop文件
# begin build properties (开始设置系统性能) # autogenerated by buildinfo.sh (通过设置形成系统信息) ro.build.id=GRI40 ( ...
随机推荐
- 基于DCT的图片数字水印实验
1. 实验类别 设计型实验:MATLAB设计并实现基于DCT的图像数字水印算法. 2. 实验目的 了解基于DCT的图像数字水印技术,掌握基于DCT系数关系的图像水印算法原理,设计并实现一种基于DCT的 ...
- C语言的乱七八糟
Note For C Linux下C编程基础(gcc/gdb/make使用) 一.vi学习 二.初探emacs 三.gcc编译器 3.1 gcc所支持后缀名解释 后缀名 解释 后缀名 解释 .c C原 ...
- pt-query-digest慢日志分析工具
简介 pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog.General log.slowlog,也可以通过SHOW PROCESSLIST或者通过tcpdum ...
- React基本语法
React 一.导入 0.局部安装 react 和 react-dom npm install --save-dev react react-dom 1.react ...
- Python支付接口汇总大全(包含微信、支付宝等)
微信接口 wzhifuSDK- 由微信支付SDK 官方PHP Demo移植而来,v3.37下载地址 weixin_pay- 是一个简单的微信支付的接口 weixin_pay- 微信支付接口(V3.3. ...
- Postgresql 入门笔记
引言 最近整理了一些PostgreSQL的 常用命令,仅供参考 1. 入门命令 # 重启数据库 $ service postgresql-9.5 restart # 登陆: $ psql ...
- 用elk+filebeat监控容器日志
elk 为 elasticsearch(查询搜索引擎),logstash(对日志进行分析和过滤,然后转发给elasticsearch),kibana(一个web图形界面用于可视化elasticsea ...
- 第二节 双向链表的GO语言实现
一.什么是双向链表 和单链表比较,双向链表的元素不但知道自己的下线,还知道自己的上线(越来越像传销组织了).小煤车开起来,图里面可以看出,每个车厢除了一个指向后面车厢的箭头外,还有一个指向前面车厢的箭 ...
- HyperLedger Fabric 1.4 智能合约 Helloworld运行(9)
9.1 Helloworld案例简介 通过执行官方End-2-End案例,初始了解Fabric网络的运行流程及yaml配置,官方End-2-End案例把执行过程集成,通过一条命令即可完成全 ...
- CORDIC算法(1):圆周旋转模式下计算三角函数和模值
CORDIC(Coordinate Rotation Digital Computer)坐标旋转数字计算机,是数学与计算机技术交叉产生的一种机器算法,用于解决计算机的数学计算问题.发展到现在,CORD ...