图解计算机中的数值范围和浮点数运算
写在前面
在【程序员进阶系列】专题的《图解计算机中数据的表示形式》一文中,我们详细的说明了在计算机中数据的表示形式。今天,我们继续来说计算机中的数值范围和浮点运算相关的知识。走起,继续,我们一起进阶,一起牛逼。
文章已收录到:
https://github.com/sunshinelyz/technology-binghe
https://gitee.com/binghe001/technology-binghe
数值的表示范围
在计算机中,码制所表示的范围,可以分为定点整数和定点小数。在定点数中,小数点是固定的。定点整数就是说小数点在最低位的后面,也就是在最右面,此时的小数点可以忽略不写。定点小数就是小数点在最高位的前面,也就是在最左边。
值得注意的是:在定点整数和定点小数中,小数点都不占位数。所以,小数点在定点整数和定点小数中不会影响数值的范围。
我们可以将定点整数和定点小数的取值范围总结成下表所示。
码制 | 定点整数 | 定点小数 |
---|---|---|
原码 | -(2n-1 -1) ~ +(2n-1 -1) | -(1-2-(n-1)) ~ +(1-2-(n-1)) |
反码 | -(2n-1 -1) ~ +(2n-1 -1) | -(1-2-(n-1)) ~ +(1-2-(n-1)) |
补码 | -2n-1 ~ +(2n-1 -1) | -1~ +(1-2-(n-1)) |
移码 | -2n-1 ~ +(2n-1 -1) | -1~ +(1-2-(n-1)) |
表格中的n表示机器的字长,也就是用多少位二进制数表示。
这张表小伙伴们不用死记硬背,说白了,这张表,冰河也记不住,那我们怎么办呢?不慌,这里,我给大家举一个例子。
例如,我们这里使用4位机器字长来表示,为了理解方便,这里我用四个方框来表示4位二进制数。
默认最高位为符号位,如下所示。
这里我们先用4位二进制数表示定点整数,则最小值为1111,最大值为0111。
最小值1111表示如下。
其转换成10进制数为-7。
最大值0111表示如下。
其转换为10进制数为7。
这样,我们使用4位二进制数表示的范围,则可以计算出结果为:-7 ~ 7。也就是 -(24-1 - 1) ~ +(24-1 -1),所以,当使用n位二进制数表示数值的范围时,我们可以得出数据的表示范围为: -(2n-1 - 1) ~ +(2n-1 -1)
所以,我们根本就不需要记住定点整数和定点小数的取值范围表,只需要简单的使用一个实际的二进制位进行验算即可得出正确的结果数据。比如,我这里以4位二进制位进行验算举例。
还有一点需要注意的是:补码和移码比原码和反码少一个数,就是-0。另外,验证定点小数和验证定点整数的方式相同,小伙伴们可自行验证定点小数的值,这里,我就不再赘述。
如果我们使用8位二进制数表示,则定点整数的取值范围为:
1111 1111 ~ 0111 1111 转换为十进制数就是: -127 ~ 127,将二进制数转换为补码为:1000 0000 ~ 0111 1111。
其中,-128的补码为1000 0000是人为规定的。
如果使用8位二进制数表示,则定点小数的取值范围为:
-0.1111 1111 ~ +0.11111111,补码的范围为: -1~ + +0.11111111。
其中,-1的补码为1000 0000是人为规定的。
浮点数的运算
浮点数的表示
首先,我们先来看下浮点数的表示形式,浮点数的表示形式如下,
N = 尾数 * 基数指数
对于浮点数来说,我们最常说的就是圆周率 π,数学上常使用3.14来表示π的值,如果使用科学计算法的话,我们可以使用形如3.14 * 103 这样的数来表示。其中,在3.14 * 103中,3.14表示尾数,10表示基数,3表示指数。
另外,3.14 * 103 可以写成多种形式,比如可以写成 0.314 * 104,也可以写成0.0314 * 105。
浮点数的存储格式
浮点数在计算机中的表示中,阶码是带符号的纯整数,尾数为带符号的纯小数。浮点数的表示格式如下所示。
一个数的浮点数表示不是唯一的。当小数点的位置发生改变时,阶码也会相应的改变。可以使用多个浮点形式表示同一个浮点数。浮点数的数值范围主要由阶码决定,数值的精度则是由尾数决定的。
浮点数的运算过程
运算的过程要依次经历对阶、尾数计算和结果格式化三个阶段。
例如计算:3.14 * 103 + 1.5 * 105的结果数据。
首先,我们需要先进行对阶操作,这里有个原则就是小数向大树看齐,这里我们需要将3.14 * 103进行对阶操作,转化成0.0314 * 105,然后与1.5 * 105进行相加操作,得出结果数据1.5314 * 105。
接下来,我们再来看看浮点数的特点。
浮点数的特点
浮点数的主要特点如下所示。
- 一般尾数使用补码表示,阶码使用移码表示。
- 阶码的位数决定数的表示范围,位数越多范围越大。
- 尾数的位数决定数的有效精度,位数越多精度越高。
- 对阶时,小数向大数看齐。
- 对阶是通过较小数的尾数右移实现的。
好了,今天就到这儿吧,我是冰河,大家有啥问题可以在下方留言,也可以加我微信:sun_shine_lyz,我拉你进群,一起交流技术,一起进阶,一起牛逼~~
图解计算机中的数值范围和浮点数运算相关推荐
- 图解计算机中数据的表示形式
作者个人研发的在高并发场景下,提供的简单.稳定.可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能.自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验 ...
- 计算机中的数值和信息编码有哪些,[转载]信息编码 (数值型和字符型编码)...
信息编码 1.数值型编码 2.字符型编码 一.数值在计算机中的表现形式.计算机采用二进制数进行数据存储与计算,这是由计算机中所使用的逻辑器件所决定的.这种逻辑器件是具有两种状态的电路(触发器),好处是 ...
- 深入理解计算机系统(2.8)---浮点数的舍入,Java中的舍入例子以及浮点数运算(重要)
https://www.cnblogs.com/zuoxiaolong/p/computer12.html 前言 上一章我们简单介绍了IEEE浮点标准,本次我们主要讲解一下浮点运算舍入的问题,以及简单 ...
- 计算机中整数的表示和整数运算
目录 1. 计算机中整数的表示 2. 计算机中整数的四则运算 1. 计算机中整数的表示 计算机只认识0和1,因此任何数都需要表示成二进制的形式.计算机系统规定,最高位用于表示整数的符号位,0表示正数, ...
- java(4)——数据类型中的数值型的浮点数
浮点数分为double和float,大小分别为8字节和4字节. 在java里的float要在末尾加F,因为浮点型默认是double类型的数 public class VarTest{public st ...
- 【编程基础】浮点数在计算机中的存储 —— IEEE 754标准
寻求更好的阅读体验,请移步 :浮点数在计算机中的存储 -[Mculover666的个人博客]. 用于存储小数的数据类型是有单精度浮点型(float)和双精度浮点型(double),那么,浮点数在计算机 ...
- 计算机中的定点数和浮点数
计算机中数据有定点数和浮点数两种表达方式. 我们先来了解一下概念: (1)定点数:小数点固定在某个位置上的数据. 就好像 0.0000001 ,0.0001111: (2)浮点数:小数点位置可以浮动的 ...
- 无符号数在计算机中怎么存储,计算机中数的存储
计算机中数的存储 1.计算机的存储单元 计算机内有很多存储单元,计算机用这些存储单元存储数据,一个存储单元可以存储一个八位的二进制数,一个存储单元又称作一个字节,记作1B.计算机的处理器一次可以处理的 ...
- 计算机中负数和正数的二进制表示
计算机中,数值的二进制表示有几个概念. 原码,补码和反码.计算机中,数值都是以补码的形式保存. 原码:就是十进制的数字转换为二进制在计算机中的表示,如正2,二进制表示为000 0010,(这里取8位显 ...
最新文章
- 智慧城市搞圈地卖设备的思路该结束了
- 2.7 HBase架构深入剖析
- 舍不得删的12个优质公号
- tf调不到keras怎么 回事_格力变频空调快速维修方法及技巧 空调压缩机不到一分钟就停,怎么回事?...
- php 映射程序,windows磁盘映射技术分享
- el-radio(自定义样式)获取选中label值 + 选中状态 + 拼接String + post提交 - 踩坑篇
- linux对于文本的操作,Linux文本文件操作
- 【华为云技术分享】大前端的自动化工厂— babel
- python tornado 模板扩展
- 如何优雅地给同事提“改进性建议”
- ORA-01438: value larger than specified precision allowed for this column
- win10系统安装到服务器失败怎么回事,小编教你win10安装失败怎么办
- 特技替身拜拜,迪士尼机器超人要上天了!
- ----已搬运----【总章程】SSRF完全学习,,什么都有,,,原理,绕过,攻击
- 科技云报道:“奇袭”混合云,青云QingCloud站上C位
- pytorch Module中的forward使用for循环与不使用for循环的区别
- 美国 计算机与艺术 专业,美国加州大学圣地亚哥分校计算机与艺术专业.pdf
- 为网站配置免费的HTTPS证书 3-4
- oracle时间回溯,关于Oracle降序索引的定意及回溯
- 多视图立体视觉:从几何到学习 (PAMI2022, IJCV2022)