c语言-整型在内存的存储

文章目录

  • 前言
  • 一、整型数值在内存中的存储
    • 1.1 整型数值的表示形式
    • 1.2 二进制的表示形式
    • 1.3 整数在内存中存储
  • 二、大端字节序存储和小端字节序存储
    • 2.1 大端字节序存储
    • 2.2 小端字节序存储
    • 2.3 练习
  • 总结


前言

本篇文章叙述c语言中整型数据在内存中的存储方式。


一、整型数值在内存中的存储

1.1 整型数值的表示形式

形式数值范围
二进制{0,1}
八进制{0,1,2,3,4,5,6,7}
十进制{0,1,2,3,4,5,6,7,8,9}
十六进制{0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f}

1.2 二进制的表示形式

正整数:原码、反码、补码相同。
负整数:原码、反码、补码需要计算。

形式计算规则
原码直接通过整数正负写出的二进制序列
反码原码符号位不变,其余按位取反
补码反码+1

例如:32位机器为例
正整数

	int a = 20;//原码:	00000000 00000000 00000000 00010100//反码:	00000000 00000000 00000000 00010100//补码:	00000000 00000000 00000000 00010100

负整数

	int a = -20//原码:	10000000 00000000 00000000 00010100//反码:	11111111 11111111 11111111 11101011//补码:	11111111 11111111 11111111 11101100

原码和补码的相互转换:

原码->补码:
方式一: 原码符号位不变,其余为按位取反,然后+1;
补码->原码:
方式一:补码符号位不变,其余按位取反,然后+1;
方式二:补码-1,符号位不变,其余位按位取反。

1.3 整数在内存中存储

整数在内存中存储方式是以二进制的补码方式存储

以补码方式存储的原因:

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

二、大端字节序存储和小端字节序存储

2.1 大端字节序存储

大端字节序存储:指数据的低位保存在内存的高地址中;数据的高位保存在低地址中。
以int a = 0x11223344为例:
在这里插入图片描述

图2.1 大端字节序存储

2.2 小端字节序存储

小端字节序存储:指数据的低位保存在内存的低地址中,数据的高位保存在高地址中。
在这里插入图片描述

图2.1 小端字节序存储

2.3 练习

设计一个小程序判断当前机器的字节序
思路:
假设int a = 1 时,a的补码转换成16进制0x00000001
取a的第一个字节,即低位;
如果第一个字节为01,则为小端字节序;
如果第一个字节为00,则为大端字节序。

代码实现如下:

//判断一个编译器的大小端字节序
// 0 大端字节序
// 1 小端字节序int sys_mode()
{int a = 1;//a的补码16进制  0x 00 00 00 01//利用char*指针取int的第一个字节的值return (*((char*)&a));
}
int main()
{if (sys_mode() == 1)printf("小端字节序\n");elseprintf("大端字节序\n");return 0;
}

总结

本篇文章介绍了c语言中整型数值的表示形式,二进制的表示形式,整型数据在内存中的存储方式;最后介绍了关于大端字节序和小端字节序的概念。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java:IO流详解

文章目录 基础流1、IO概述1.1 什么是IO1.2 IO的分类1.3 顶级父类们 2、字节流2.1 一切皆为字节2.2 字节输出流 OutputStream2.3 FileOutputStream类2.3.1 构造方法2.3.2 写出字节数据2.3.3 数据追加续写2.3.4 写出换行 2.4 字节输入流 InputStream2.5 FileInputStream类2.5.1 构…

Unity | NGO网络框架

目录 一、相关属性及变量 1.ServerRpc属性 2.ClientRpc属性 3.NetworkVariable变量 二、相关组件 1.NetworkManager 2.Unity Transport 3.Network Object 4.NetworkBehaviour: 5.NetworkTransform Syncing(Synchronizing) Thresholds Interpolation 三…

fastadmin学习02-修改后台管理员账号密码

问题 如果是别人部署好的fastadmin网站不知道后台登录地址和账号密码怎么办 后台登录地址 public目录下有一个很奇怪的php就是后台登录地址啦 忘记账号密码 找到fa_admin,fa_是前缀,肯能每个项目不太一样 UPDATE fa_admin set password1d020dee8ec…

【LMM 011】MiniGPT-5:通过 Generative Vokens 进行交错视觉语言生成的多模态大模型

论文标题:MiniGPT-5: Interleaved Vision-and-Language Generation via Generative Vokens 论文作者:Kaizhi Zheng* , Xuehai He* , Xin Eric Wang 作者单位:University of California, Santa Cruz 论文原文:https://arxiv.org/ab…

TypeScript 从入门到进阶之基础篇(三) 元组类型篇

系列文章目录 TypeScript 从入门到进阶系列 TypeScript 从入门到进阶之基础篇(一) ts基础类型篇TypeScript 从入门到进阶之基础篇(二) ts进阶类型篇TypeScript 从入门到进阶之基础篇(三) 元组类型篇TypeScript 从入门到进阶之基础篇(四) symbol类型篇 持续更新中… 文章目录 …

JDBC数据库访问——数据库操作

与指定的数据库建立连接后,就可以使用JDBC提供的API对数据库进行操作,包括查询、新增、更新、删除等。 1.查询操作 和数据库建立连接后,对数据库表进行查询操作的步骤如下: ①创建statement对象 由已创建的Connection对象con调…

【MySQL】事务Transaction

1. 事务的概念 事务是什么 在业务逻辑中使用sql,面对一些较复杂的场景,是需要多个sql语句组合起来实现的。如:银行的转账业务,若客户A要转账100元给客户B,就要两条sql:A余额减100,B余额加100&a…

深度学习(学习记录)

题型:填空题判断题30分、简答题20分、计算题20分、综合题(30分) 综合题(解决实际工程问题,不考实验、不考代码、考思想) 一、深度学习绪论(非重点不做考察) 1、传统机器学习&…

Android学习(一):Android Studio安装与配置

Android学习(一):Android Studio安装与配置 一、安装 下载地址 下载zip文件,免安装。 二、下载资源 启动后,出现该弹框,点击Cancel。 点击Next 默认,点击Next。 点击Next。 点击Finish 开始…

鸿蒙应用中的通知

目录 1、通知流程 2、发布通知 2.1、发布基础类型通知 2.1.1、接口说明 2.1.2、普通文本类型通知 2.1.3、长文本类型通知 2.1.4、多行文本类型通知 2.1.5、图片类型通知 2.2、发布进度条类型通知 2.2.1、接口说明 2.2.2、示例 2.3、为通知添加行为意图 2.3.1、接…

Vue小练习--任务列表

这是一个非常实用的例子,主要实用的是v-model、v-on、v-for指令,javaScript的数组也会涉及一些,javaScript数组方法有很多,本文使用的添加元素和删除元素非常实用,可以记下来。 设计思路 很多例子看起来很难&#xf…

【BCC动态跟踪PostgreSQL】

BPF Compiler Collection (BCC)是基于eBPF的Linux内核分析、跟踪、网络监控工具。其源码存放于GitCode - 开发者的代码家园 想要监控PostgreSQL数据库的相关SQL需要在编译PostgreSQL的时候开启dtrace。下文主要介绍几个和PostgreSQL相关的工具,其他工具可根据需求自行了解。 …

【React系列】父子组件通信—props属性传值

本文来自#React系列教程:https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 认识组件的嵌套 组件之间存在嵌套关系: 在之前的案例中,我们只是创建了一个组件App&…

VINS-MONO拓展1----手写后端求解器,LM3种阻尼因子策略,DogLeg,构建Hessian矩阵

文章目录 0. 目标及思路1. 非线性优化求解器2. 基于VINS-MONO的Marginalization框架构建Hessian矩阵2.1 estimator.cpp移植2.2 solve.cpp/preMakeHessian()2.3 solve.cpp/makeHessian() 3. solve.cpp/solveLinearSystem()求解正规方程4. 更新状态5. 迭代求解6. EVO评估结果7. 待…

微服务-dubbo工程案例搭建

基础案例搭建 1 依赖 父工程POM <dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${com.alibaba.cloud.vers…

设计模式学习2

代理模式&#xff1a;Proxy 动机 “增加一层间接层”是软件系统中对许多复杂问题的一种常见解决方案。在面向对象系统中&#xff0c;直接食用某些对象会带来很多问题&#xff0c;作为间接层的proxy对象便是解决这一问题的常见手段。 2.伪代码&#xff1a; class ISubject{ pu…

【LMM 012】TinyGPT-V:24G显存训练,8G显存推理的高效多模态大模型

论文标题&#xff1a;TinyGPT-V: Efficient Multimodal Large Language Model via Small Backbones 论文作者&#xff1a;Zhengqing Yuan, Zhaoxu Li, Lichao Sun 作者单位&#xff1a;Anhui Polytechnic University, Nanyang Technological University, Lehigh University 论文…

thinkphp学习04-控制器定义

控制器&#xff0c;即 controller&#xff0c;控制器文件存放在 controller 目录下&#xff1b; 如果想改变系统默认的控制器文件目录&#xff0c;可以在 config 下 route.php 配置&#xff1a; 将controller修改为controller123&#xff0c;就会报错&#xff0c;说明这个配置…

Python基础入门第八课笔记(自定义函数 lambda)

什么时候用lambda表达式&#xff1f; 当函数有一个返回值&#xff0c;且只有一句代码&#xff0c;可以用lambda简写。 2、lanbda语法 lambda 形参 : 表达式 注意&#xff1a; 1、形参可以省略&#xff0c;函数的参数在lambda中也适用 2、lambda函数能接收任何数量的参数但只能…

[HCTF 2018]Warmup

[HCTF 2018]Warmup wp 进入页面&#xff1a; 查看源码&#xff1a; 发现提示&#xff1a;source.php &#xff0c;直接访问&#xff0c;得到源代码&#xff1a; <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist [&qu…