整数和浮点数在内存中是如何存储的?

1.整数在内存中的存储

      首先数据在内存中都是以二进制的形式存储的,而整数在内存中也是以二进制的形式存储的,而整数的表示形式有三种,分别是源码,反码,补码,而整数在内存中是以补码的形式存放的。

      三种表示方法均有符号位和数值位两部分,符号位用0表示“正”,用1表示“负”,而源码反码补码的二进制序列的最高位表示符号位,剩余序列表示数值位。

鱼哥带大家先来看看正数的源码反码补码怎么表示

我们以int类型的9为例:

正数的源码反码均相同,数值位用二进制来表示,9的二进制序列为1010,但是一个int类型是4个字节,而一个字节是8个比特位,总共要用32个比特位来存储9,所以大家也可以自己算算一个int类型的数据存储的数字范围

 接下来,鱼哥带大家看看负数的源码反码补码怎么表示

上面这个数表示-9 

很明显,负数的源反补要比正数复杂

通过观察可以发现,负数的反码是源码的符号位不变,数值位取反(也就是0变1,1变0)

补码是符号位不变,在反码的基础上加1得到的

接下来这张图会让你对负数的源码反码补码怎么转换会有更深的理解

 重点:对于整形来说,数据在内存中是以补码的形式存放的

扩充了解:

                  在计算机系统中,数值⼀律用补码来表示和存储。
                  原因在于,使用补码,可以将符号位和数值域统一处理;
                  同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转                    换,其运算过程是相同的,不需要额外的硬件电路

2.浮点数在内存中的存储

             整数在内存中的存储对于大家来说应该是小试牛刀吧,原来数据在内存中的存储这么简单,没什么难度,那么接下来鱼哥带大家一起来学习浮点数在内存中的存储

根据国际标准IEEE(电气和电子工程协会)754,任意⼀个⼆进制浮点数V可以表示成下面的形式:
V = (-1) ^S* M ∗ 2^E 
• (-1)S 表示符号位,当S=0,V为正数;当S=1,V为负数
• M表示有效数字,M是大于等于1,小于2的
• 2^E 表示指数位

鱼哥给大家举个例子

十进制的6.0,写成二进制为110.0,相当于1.1*2^2

按照上面V的公式可以得到S=0(因为6.0是一个正数),M=1.1,E=2

对于-6.0来说

写成二进制为-110.0,相当于-1.1*2^2

按照公式也就是S=1,M=1.1,E=2

IEEE754规定:

对于32位的浮点数(float类型)来说,最高的1为存储符号位S,接下来的8位存储指数位E,剩下的23位存储有效数字M

对于64位的浮点数(double类型)来说,最高的1位依然存储符号位S,接下来的11位存储指数位E,身下的52位存储有效数字M

鱼哥给大家画个图方便理解

浮点数存储的过程:

IEEE754对有效数字M和指数E,还有⼀些特别规定。
前面说过, 1≤M<2 ,也就是说,M可以写成 1.xxxxxx 的形式,其中 xxxxxx 表示小数部分。
IEEE754规定,在计算机内部保存M时,默认这个数的第⼀位总是1,因此可以被舍去,只保存后面的xxxxxx部分。比如保存1.01的时候,只保存01,等到读取的时候,再把第一位的1加上去。这样做的目的,是节省1位有效数字。以32位浮点数为例,留给M只有23位,将第⼀位的1舍去以后,等于可以保存24位有效数字
至于指数E,情况就比较复杂
首先,E为一个无符号整数(unsigned int)
这意味着,如果E为8位,它的取值范围为0~255;如果E为11位,它的取值范围为0~2047。但是,我们知道,科学计数法中的E是可以出现负数的,所以IEEE754规定,存入内存时E的真实值必须再加上一个中间数,对于8位的E,这个中间数是127;对于11位的E,这个中间数是1023。比如,2^10的E是10,所以保存成32位浮点数时,必须保存成10+127=137,即10001001

浮点数取的过程也比较复杂:

指数E从内存中取出还可以再分成三种情况:
1.E不全为0或不全为1
这时,浮点数就采用下面的规则表示,即指数E的计算值减去127(或1023),得到真实值,再将有效数字M前加上第一位的1。
比如:0.5的⼆进制形式为0.1,由于规定正数部分必须为1,即将小数点右移1位,则为1.0*2^(-1),其阶码为-1+127(中间值)=126,表示为01111110,而尾数1.0去掉整数部分为0,补齐0到23位00000000000000000000000,则其二进制表示形式为:

0 01111110 00000000000000000000000

2.E全为0
这时,浮点数的指数E等于1-127(或者1-1023)即为真实值,有效数字M不再加上第⼀位的1,而是还原为0.xxxxxx的小数。这样做是为了表示±0,以及接近于0的很小的数字。
1 0 00000000 00100000000000000000000

3.E全为1
这时,如果有效数字M全为0,表示±无穷大(正负取决于符号位s);
1 0 11111111 00010000000000000000000

好了,关于整数和浮点数在内存中的存储鱼哥就说到这里

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2869855.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

SQLiteC/C++接口详细介绍之sqlite3类(十七)

返回目录&#xff1a;SQLite—免费开源数据库系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;十六&#xff09; 下一篇&#xff1a; SQLiteC/C接口详细介绍之sqlite3类&#xff08;十八&#xff09; ​ 53.sqlite3_trace_v2 函数功能&#x…

element-plus怎么修改表单中的label字体颜色及大小

问题描述&#xff1a; 当我们在vue3中使用element-plus组件库提供的表单组件时&#xff0c;有时我们需要修改表单中label的字体颜色等属性&#xff0c;这是如果直接选中label的class进行修改是不起作用的&#xff0c;我们只需深度选择即可选中并进行修改。 比如&#xff1a; …

GET和POST方法的区别

GET和POST的区别 在我们开发项目的时候常常会在Controller层使用到POST方法或者GET方法&#xff0c;犹豫到底将接口定义为GET方法还是POST方法&#xff1f;那这两者之间有什么区别呢&#xff1f; 看一下官方定义&#xff1a; GET 和 POST 是 HTTP 协议中最常用的两种请求方法…

软考79-上午题-【面向对象技术3-设计模式】-结构型设计模式02

一、组合模式 1-1、意图 将对象组合成树型结构&#xff0c;以表示"部分-整体"的层次结构。Composite使得用户对单个对象和组 合对象的使用具有一致性。 示例&#xff1a;对象&#xff1a;文件、文件夹 1-2、结构 Component 为组合中的对象声明接口&#xff1b;在适…

MacBook使用——彻底卸载并删除软件:NTFS for Mac

问题 之前因MacBook读写NTFS格式移动硬盘&#xff0c;我安装并使用了 Paragon NTFS for Mac &#xff0c;试用期结束后将其从【应用程序】中卸载移除了。但之后每次开机启动时&#xff0c;系统还是会弹出【激活】通知&#xff0c;如下图 解决 Step1、在用户目录下的 Library 目…

Kubernetes 编排系统

Kubernetes 编排系统 Kubernetes&#xff08;简称K8s&#xff09;是一个开源的容器编排平台&#xff0c;用于自动化部署、扩展和管理容器化应用程序。它提供了一种灵活而强大的方式来管理容器化应用程序的生命周期&#xff0c;包括自动化部署、扩展、负载均衡、故障恢复等功能…

01初识Python

一、Python 简介 二、为什么要学Python? 三、Python 安装 四、输出第一条指令 五、总结 一、Python 简介 Python是一种高级编程语言,由Guido van Rossum于1991年创建。它具有简单易学的语法结构,被广泛应用于Web开发、数据科学、人工智能等领域。 Python具有丰富的库…

MySQL安装(Mac系统)

首先要删除本机原有的mysql 停止MySQL服务 sudo /usr/local/mysql/support-files/mysql.server stop不放心可以使用以下命令查询并杀死进程 ps aux | grep mysqld sudo kill <PID>再次尝试停止服务 sudo /usr/local/mysql/support-files/mysql.server stop卸载MySQL&…

蓝桥杯单片机快速开发笔记——PWM

一、原理分析 使用定时器输出PWM&#xff08;脉宽调制&#xff09;信号是通过微控制器的定时器模块来生成一种周期性的脉冲信号&#xff0c;通过控制脉冲的高电平时间&#xff08;占空比&#xff09;来控制输出信号的平均功率。以下是生成PWM信号的基本原理概述&#xff1a; 定…

PCB设计中的MARKER

今天在给板子布局的时候发现了一个这样的东西&#xff0c;名叫MARKER&#xff0c;查了一下这个东西分享一下&#xff1a; 目录 MARKER是什么样的&#xff1f; MARKER的用途&#xff1a; MARKER是必须的吗&#xff1f; MARKER是什么样的&#xff1f; 他在PCB中是这样的&…

力扣每日一题 矩阵中移动的最大次数 DP

Problem: 2684. 矩阵中移动的最大次数 复杂度 ⏰ 时间复杂度: O ( n m ) O(nm) O(nm) &#x1f30e; 空间复杂度: O ( n m ) O(nm) O(nm) Code class Solution { public int maxMoves(int[][] grid){int n grid.length;int m grid[0].length;int[][] f new int[n][m]…

【Flink SQL】Flink SQL 基础概念(三):SQL 动态表 连续查询

《Flink SQL 基础概念》系列&#xff0c;共包含以下 5 篇文章&#xff1a; Flink SQL 基础概念&#xff08;一&#xff09;&#xff1a;SQL & Table 运行环境、基本概念及常用 APIFlink SQL 基础概念&#xff08;二&#xff09;&#xff1a;数据类型Flink SQL 基础概念&am…

EVENG环境安装及测试 1

文章目录 下载eve镜像导入镜像访问测试导入自定义镜像 下载eve镜像 下载地址 链接&#xff1a;https://pan.baidu.com/s/1NqGE34oE5qZ6TCugMymPDg 提取码&#xff1a;f4m1 导入镜像 安装vmware 虚拟机&#xff0c;文件->打开 选中上述镜像 输入虚拟机的名称和保存 路径&a…

pytorch CV入门 - 汇总

初次编辑&#xff1a;2024/2/14&#xff1b;最后编辑&#xff1a;2024/3/9 参考网站-微软教程&#xff1a;https://learn.microsoft.com/en-us/training/modules/intro-computer-vision-pytorch 更多的内容可以参考本作者其他专栏&#xff1a; Pytorch基础&#xff1a;https…

DDR协议基础进阶(三)——(基本功能、初始化、MR寄存器)

DDR协议基础进阶&#xff08;三&#xff09;——&#xff08;基本功能、初始化、MR寄存器&#xff09; 一、DDR基本功能 DDR基本功能主要包括&#xff1a; 8-bit prefetch预取——8-bit&#xff0c;是指8位数据&#xff0c;即8倍芯片位宽的数据。由于DDR内部数据传输是32bit…

【python开发】并发编程(上)

并发编程&#xff08;上&#xff09; 一、进程和线程&#xff08;一&#xff09;多线程&#xff08;二&#xff09;多进程&#xff08;三&#xff09;GIL锁 二、多线程开发&#xff08;一&#xff09;t.start()&#xff08;二&#xff09;t.join()&#xff08;三&#xff09;t.…

Word粘贴时出现“运行时错误53,文件未找到:MathPage.WLL“的解决方案

在安装完MathType后&#xff0c;打开word复制粘贴时报错“运行时错误53,文件未找到&#xff1a;MathPage.WLL” 首先确定自己电脑的位数&#xff08;这里默认32位&#xff09; 右击MathType桌面图标&#xff0c;点击“打开文件所在位置”&#xff0c; 然后分别找到MathPage.W…

第一章:模型从硬盘文件到显示器像素的全过程分析

模型从硬盘文件到显示器像素的全流程分析 引言一、硬盘中的模型文件&#xff08;1&#xff09;分离式模型文件&#xff08;2&#xff09;模型主文件2.1 顶点几何与索引数据构成模型表面2.2 通过材质或贴图为模型表面着色2.3 通过骨骼动画驱动模型 二、CPU中的模型数据三、GPU中…

【第七章】深度学习思维模式

前言 尽管我们的神经网络表现出令人印象深刻的性能&#xff0c;但这种性能在某种程度上是神秘的。网络中的权重和偏差是自动发现的。这意味着我们并没有立即能够解释网络如何实现其功能。我们能否找到某种方式来理解我们的网络是如何对手写数字进行分类的原则&#xff1f;而且…

高中数学:复杂函数图像的草图画法(较难)

一、三大基本函数图像 1、指数函数图像 2、对数函数图像 3、幂函数图像 二、案例 口诀&#xff1a;上加下减&#xff0c;左加右减 1、指数函数图像变化规律 2、带绝对值的函数图像 情况1&#xff1a;绝对值套住整个函数表达式 画法原则&#xff1a;x轴下方的图像&#xff0…