当前位置: 首页 > news >正文

数据在内存中的存储(1)

目录

1、整数在内存中的存储

原码、反码、补码:

2、大小端:

前提须知:

大小端存储方式:

字节的顺序:

概念:

判断机器是大端还是小端:

代码展示:

代码优化1.0:

​编辑

代码优化2.0:


1、整数在内存中的存储

原码、反码、补码:

整数的2进制表示方法有三种,即原码、反码和补码三种表示方法均有符号位和数值位两部分。

符号位都是用0表示"正",用1表示"负”。

数值位最高位的一位是被当做符号位,剩余的都是数值位。

例如:

int a = 5;
//00000000 00000000 00000000  00000101 5的原码
//00000000 00000000 00000000  00000101 5的反码
//00000000 00000000 00000000  00000101 5的补码

而-5的原码是在5的原码基础上,将符号位从0改成1

int a = -5;
//10000000 00000000 00000000  00000101 -5的原码
//11111111 11111111 11111111  11111010 -5的反码
//11111111 11111111 11111111  11111011 -5的补码

原码到补码是经过了取反变为反码,在反码的基础上+1得到补码。 

而补码转化为原码也是如此,进行反取后+1

 注意补码的取反不是反码。

对于整形来说:数据存放内存中其实存放的是补码。

为什么呢?

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

 

2、大小端:

前提须知:

虽然内存中存储是使用二进制形式进行存储,但是在内存中,数据是以十六进制的形态在内存块中进行展示的。

例如:

int a = 11;
//00000000 00000000 0000000 00001011

 如图是11的二进制原码。

而通过四个二进制数位一个十六进制数位的转化,得到:

0x 00 00 00 0b

转化详情:http://t.csdn.cn/kg9co 

而在内存中的展示:

 

又例如:

int b = 0x11223344:

在内存中的展示:

 

以上两个例子都能让我们直到,在内存数据块中,数据是以十六进制的方式进行展示的。 

 但是我们又从以上两个例子中,展示的方式或者说顺序和我们知晓的十六进制数位有所差异,或者说顺序相反,这是这么回事呢?

其实这里涉及了,大小端的存储方式。

 

大小端存储方式:

字节的顺序:

当一个数值超过1个字节的时候,存储在内存中有存储的顺序问题,而内存中的存储单元是1字节的。

概念:

在内存中的数据可以拥有无数种存储方式,但是无论这么存储,关键在于存进去和取出来的简易程度。

举例:

图上四种方式都是在理论中成立的存储方式,但是只有前两个存储方式是真确的!

而这两种存储的方式分别叫做大端字节序存储和小端字节序存储,简称大端和小端。

从上图的操作来看,大端存储是指原封不动的在内存块中展示,而小端存储则是将十六进制进行倒序在内存块中展示。

但是在数据内存中来看:

  • 大端字节序:将一个数值的低位字节序的内容存储到高地址处,高位字节序的内容存储到低地址处。 
  • 小端字节序:将一个数值的低位字节序的内容存储到低地址处,高位字节序的内容存储到高地址处
  • 注意:在进制中,左端是高位,右端是低位。 
  •  Vs中采用的是小端字节数存储

 

判断机器是大端还是小端:

判断编译器是大端存储还是小端存储,可以通过看第一个字节数是否是理想中的数据。

例如,我们这里使用整型数字1进行判断

 

如若编译器是小端,那么第一个字节便是1,反之,如果是大端,那么第一个字节便是0

代码展示:

 

 *(char*)&a;

  • &a是拿出a的地址,a的地址是从起始位置开始的也就是在内存中存储的第一个字节开始的。
  • char*表示取第一个字节,最前面的*表示进行解开第一个字节

代码优化1.0:

代码优化2.0:

 

 

相关文章:

数据在内存中的存储(1)

目录 1、整数在内存中的存储 原码、反码、补码: 2、大小端: 前提须知: 大小端存储方式: 字节的顺序: 概念: 判断机器是大端还是小端: 代码展示: 代码优化1.0: …...

LINUX常用命令练习

显示LINUX系统当前的日期和时间。 date以 yyyy/mm/dd的格式显示系统当前的日期 date %Y/%m/%d以 yyyy-mm-dd的格式显示系统当前的日期 date %Y-%m-%d查看在线用户信息 who显示当前月份的日历 cal显示2023年整年的日历 cal 2023显示2023年9月的日历 cal 9 2023查看LINUX系统的Sh…...

2022年全国研究生数学建模竞赛华为杯C题汽车制造涂装-总装缓存调序区调度优化问题求解全过程文档及程序

2022年全国研究生数学建模竞赛华为杯 C题 汽车制造涂装-总装缓存调序区调度优化问题 原题再现: 背景介绍   汽车制造厂主要由焊装车间、涂装车间、总装车间构成,每个车间有不同的生产偏好,如:焊装车间由于车身夹具的限制偏向最…...

文本直接生成3D游戏场景、功能,用ChatGPT方式开发游戏!

3D游戏开发平台Hiber3D通过谷歌的PaLM大语言模型,结合自身500多个模板库,以及数百万个成品3D场景进行微调,推出了一个全新游戏开发平台。 该平台在生成式AI加持下,用户可以像使用ChatGPT那样,通过文本问答方式快速创建…...

2023年会展行业研究报告

第一章 行业概况 1.1 定义 会展行业是一个多元化和复杂的领域,涵盖了许多不同的活动和功能。一般来说,会展业是指在一定的区域空间内,许多人聚集在一起形成的定期或者不定期,制度或者非制度,传递和交流信息的群众性的…...

【Redis】如何保证Redis缓存与数据库的一致性?

文章目录 1、四种同步策略2、更新缓存还是删除缓存2.1 更新缓存2.2 删除缓存 3、先操作数据库还是缓存3.1 先删除缓存再更新数据库3.2 先更新数据库再删除缓存 4、延时双删4.1 采用读写分离的架构怎么办? 5、利用消息队列进行删除的补偿 1、四种同步策略 想要保证缓…...

MATLAB中ischange函数用法

目录 语法 说明 示例 均值的变化 线性区的变化 矩阵数据 ischange函数的功能是查找数据中的突然变化。 语法 TF ischange(A) TF ischange(A,method) TF ischange(___,dim) TF ischange(___,Name,Value) [TF,S1] ischange(___) [TF,S1,S2] ischange(___) 说明 ​…...

【React + Ant Design】表单如何在前置项未填写时禁止后置项交互并提示

在 react antd 中,对表单做在前置项未填写时禁用后置项交互并提示的效果。 情景 最近有这么个需求,某个业务中,要填写一张表单,其中有这样两项:选择数据连接和选择数据表,数据表是数据连接下所拥有的表。…...

Linux学习之MySQL建表

MySQL查询1 MySQL查询2 表管理 #1. 建库#1)库名命名规则仅可以使用数字、字母、下划线、不能纯数字,区分字母大小写,具有唯一性,不可使用MySQL命令或特殊字符#创建数据表时可以查看一下默认的字符集,8.0后创建数据库…...

Redis哨兵集群的介绍及搭建

Redis 是一款开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。然而,作为一个单点服务,Redis 在面临硬件故障或者网络问题时可能会导致服务不可用。为了解决这个问题,Redis 提供了哨兵模式,一个…...

【zookeeper】zookeeper日常运维

本文将分享一些zookeeper在日常使用中一些维护经验。 zookeeper清理快照 脚本或者命令清理 zookeeper长时间运行,快照逐渐增多可能造成服务器磁盘被占满的情况,但我们不能贸然用rm命令删除快照文件,如果直接删完会导致丢失好多数据&#x…...

【工作记录】MQTT介绍、安装部署及springboot集成@20230912

背景 近期公司可能会有物联网设备相关项目内容,提前对用到的mqtt协议做预研和初步使用。 最初接触到mqtt协议应该是早些年的即时通讯吧,现在已经是物联网设备最热门的协议了。 作为记录,也希望能帮助到需要的朋友。 MQTT介绍 《MQTT 协议规…...

Flask 使用 JWT(一)

下面是一些 JWT 的使用场景: 1、 授权:这是 JWT 最常的使用场景。一旦用户登录,后续的每个请求都必须携带 JWT ,允许用户携带 Token 访问所有的路由、服务器和资源。单点登录时目前使用最广泛的一个场景,因为它开销小并且能够轻易的实现跨域访问。 2、信息交换:JWT Token…...

Oracle(1):Oracle简介

1 什么是 ORACLE ORACLE 数据库系统是美国 ORACLE 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S 体系结构的数据库之一。 ORACLE 通常应用于大型系统的数据库产品。 ORACLE 数据…...

计算机网络篇之IP地址

计算机网络篇之IP地址 文章目录 计算机网络篇之IP地址概括IPv4地址IPv6地址分配总结 概括 IP地址是计算机网络中用于标识和定位设备的一组数字,IP地址分为IPv4和IPv6两种格式 IPv4地址 IPv4地址是32位的二进制数,通常表示为四个用点分隔的十进制数&am…...

webrtc-m79-测试peerconnectionserver的webclient-p2p-demo

1 背景 webrtc的代码中有peerconnectionclient和peerconnectionserver的例子,但是没有对应的web端的例子,这里简单的写了一个测试例子,具体如下: 2 具体操作 2.1 操作流程 2.2 测试效果 使用webclient与peerconnectionclient的…...

C#,《小白学程序》第十五课:随机数(Random)第二,统计学初步,数据统计的计算方法与代码

1 文本格式 /// <summary> /// 《小白学程序》第十五课&#xff1a;随机数&#xff08;Random&#xff09;第二&#xff0c;统计学初步&#xff0c;数据统计的计算方法与代码 /// 用随机数做简单的统计并用图形显示统计结果。 /// </summary> /// <param name&q…...

C# 子类如何访问子类的方法(同一父类)

在继承关系中&#xff0c;子类可以通过创建另一个子类的对象来访问其方法。下面是一个示例&#xff0c;展示了子类如何访问另一个子类的方法&#xff1a; public class Animal {public virtual void Speak(){Console.WriteLine("我是动物。");} }public class Cat :…...

《Docker 容器化的艺术:深入理解容器技术》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…...

gitlab配置hook,commit message的时候校验提交的信息

在 GitLab 中配置 Webhook 来调用 Java 接口以校验 commit 信息&#xff0c;是很多公司的一些要求&#xff0c;因为提交信息的规范化是必要的 不阻止commit的版本 在 GitLab 项目中进入设置页面。 在左侧导航栏中选择 “Webhooks”&#xff08;Web钩子&#xff09;。 在 We…...

ssh远程管理服务

ssh远程管理服务是什么 SSH是一个安全协议&#xff0c;在进行数据传输时&#xff0c;会对数据包进行加密处理&#xff0c;加密后在进行数据传输。确保了数据传输安全, 那SSH服务主要功能有哪些呢&#xff1f; 1.提供远程连接服务器的服务 1&#xff09;linux远程连接协议&…...

C语言顺序表

文章目录 前言线性表顺序表静态顺序表动态顺序表 接口实现 前言 我们先补一下上篇博客落下的知识点&#xff1a; 首先说一下斐波那契的时间复杂度和空间复杂度&#xff1a; long long Fac(size_t N) {if(0 N)return 1;return Fac(N-1)*N; }还是说一下size_t代表的类型是unsi…...

滑动窗口详解

滑动窗口本质其实也是一种双指针算法&#xff0c;只是因为它维护的区间随着遍历的进行在不停变化&#xff0c;所以形象地称为“滑动窗口” 一、⻓度最⼩的⼦数组 题目要求找到满足条件的长度最小的子数组&#xff0c;我们先来想想暴力的做法&#xff0c;再来想想能不能优化&am…...

JAVA -华为真题-分奖金

需求: 公司老板做了一笔大生意&#xff0c;想要给每位员工分配一些奖金&#xff0c;想通过游戏的方式来决定每个人分多少钱。按照员工的工号顺序&#xff0c;每个人随机抽取一个数字。按照工号的顺序往后排列&#xff0c;遇到第一个数字比自己数字大的&#xff0c;那么&#xf…...

第二章:25+ Python 数据操作教程(第十八节如何使用 Matplotlib 库在 python 中执行绘图和数据可视化)持续更新中

本教程概述了如何使用 Matplotlib 库在 python 中执行绘图和数据可视化。这篇文章的目的是让您熟悉该库的基础知识和高级绘图功能。它包含几个示例,将为您提供使用 Python 生成绘图的实践经验。 目录 什么是 Matplotlib? Matplotlib 基础知识<...

XShell7 + Xftp7 + IDEA 打包MapReduce程序到集群运行

参考博客 【MapReduce打包成jar上传到集群运行】http://t.csdn.cn/2gK1d 【Xshell7/Xftp7 解决强制更新问题】http://t.csdn.cn/rxiBG IDEA打包MapReduce程序 这里的打包是打包整个项目&#xff0c;后期等学会怎么打包单个指定的mapreduce程序再来更新博客。 1、编译打包 …...

微软D365 入门文章汇总以及各项认证介绍(持续跟新.....)

介绍 希望入门D365的同学们&#xff0c;需要具备的知识点&#xff0c;涉及C#&#xff0c;WebApi&#xff0c;前端知识&#xff0c;Power Platform等知识&#xff0c;以及Azure的知识点等&#xff0c;需要有了解。 实施Microsoft Dynamics 365 CE &#xff08;12章&#xff09;…...

vscode搭建Django自带后台管理系统

文章目录 一、django自带的后台管理系统1. 建表2. 后台管理系统2.1 创建账号2.2 运行后台2.3 登录 二、模版渲染1. 直接将数据渲染到页面2. 数据传递给js 三、数据库1. 查看当前数据库2. 创建UserInfo数据表3. Django rest framework配置 四、vue前端搭建1. 在Django项目的根目…...

Verilog零基础入门(边看边练与测试仿真)-时序逻辑-笔记(4-6讲)

文章目录 第四讲第五讲第六讲 第四讲 1、计数器 代码&#xff1a; //计数器 timescale 1ns/10ps module counter(clk,res,y); input clk; input res; output[7:0] y;reg[7:0] y; wire[7:0] sum;//1运算的结果&#xff08;1&#xff0…...

2023-09-12力扣每日一题

链接&#xff1a; 1462. 课程表 IV 题意 一个pair<int,int>表示a是b的前置 进行n次查询&#xff0c;查询q是否是p的前置&#xff08;可以不是直接前置&#xff09; 解&#xff1a; 就是要把01、12、13这种能转换出02、03&#xff0c;弗洛伊德即可 无环无负权 实际…...

湖南鸿源电力建设有限公司网站/头条搜索是百度引擎吗

【实验】【VNC】Linux环境VNC服务安装、配置与使用 1.确认VNC是否安装默认情况下&#xff0c;Red Hat Enterprise Linux安装程序会将VNC服务安装在系统上。确认是否已经安装VNC服务及查看安装的VNC版本[roottestdb ~]# rpm -q vnc-servervnc-server-4.1.2-9.el5[roottestdb ~]#…...

哪种网站/网页自动点击软件

文章目录前言一、方法1.使用TextBox层叠2.同步TextBox位置二、示例1.代码2.显示效果总结1.优点2.缺点前言 我上一篇文章写到了C# wpf textblock文字添加描边的一种方法 &#xff0c;这里做个补充添加上TextBox用同样方法实现文字描边&#xff0c;但是TextBox和TextBlock还是有…...

小型手机网站建设/seo职位描述

阿里云弹性公网IP&#xff08;EIP&#xff09;是一种可以独立购买和持有的公网IP地址资源&#xff0c;弹性公网IP具有独立购买持有、弹性绑定和配置灵活等优势&#xff0c;但实际使用中弹性公网IP也是有很多限制的&#xff0c;阿里云惠网分享弹性公网IP&#xff08;EIP&#xf…...

wordpress系统付费/软文代写平台

Unity 3D 是目前主流的游戏开发引擎&#xff0c;有数据显示&#xff0c;全球最赚钱的 1000 款手机游戏中&#xff0c;有 30% 是使用 Unity 3D 开发出来的。尤其在 VR 设备中&#xff0c;Unity 3D 游戏开发引擎具有统治地位。 Unity 3D 能够创建实时、可视化的 2D 和 3D 动画、…...

高端网站建设 企业网站建站/佛山网站建设制作

概述 应用程序通过单点登录解决账号创建问题 什么是SSO SSO&#xff08;SingleSign-On&#xff0c;单点登录&#xff09;通过在IDP&#xff08;身份验证提供商&#xff09;登录成功后&#xff0c;就可以访问IDP关联的应用程序以及相关权限 为了解决以下问题&#xff1a; 用户使…...

自己做网站卖阀门/网络推广怎么做

利用回溯法解决全排列问题。 题目&#xff1a; 给定一个没有重复数字的序列&#xff0c;返回其所有可能的全排列。示例&#xff1a; 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]思路&#xff1a; 代码&#xff1a; class Solution { pub…...