C语言系列-整数在内存中的存储大小端字节序

  🌈个人主页: 会编程的果子君
💫个人格言:“成为自己未来的主人~” 

 

目录

整数在内存中的存储

大小端字节序和字节序判断

什么是大小端

为什么会有大小端

练习


整数在内存中的存储

在讲解操作符的时候,我们就讲过了下面的内容

整数的2进制表示方法有三种:即原码,反码和补码 

三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1来表示“负”,最高位的一位被当做符号位,剩下的都是数值位。

正整数的原码,反码,补码均相同。

负整数的三种表示方法各不相同。

原码:直接将数值按照正负数的形式翻译成二进制得到的就是原码。

反码:将原码的符号位不变,其他位一次按位取反就可以得到反码。

补码:反码+1就得到补码。

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

为什么呢?

在计算机系统中,数值一律用补码来表示和存储。

原因在于:使用补码,可以将符号位和数值域统一处理。

同时,加法和减法也可以统一处理(CPU只有加法器),此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

大小端字节序和字节序判断

当我们了解了整数在内存中存储后,我们调试一个细节。

#include<stdio.h>
int main()
{int a = 0x11223344;return 0;
}

什么是大小端

其实超过一个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为大端字节序和小端字节序存储,下面是具体的概念。

大端(存储)模式:是指数据的低位字节内容保存在内存的高地址处,而数据的高位字节内容保存在内存的低地址处。

小端(存储)模式:是指数据的高位字节内容保存在内存的高地址处,而数据的低位字节内容保存在内存的低地址处。

为什么会有大小端

因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,而一个字节对应着8个bit位,但是在C语言当中除了8bit的char之外,还有16bit的short类型,另外,对于位数大于8位的处理器,例如16位或者32位处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题,因此就导致了大端存储模式和小端存储模式。

练习

写一个代码判断机器是大端存储还是小端存储

#include<stdio.h>
int check_sys()
{int a = 1;return *(char*)&a;
}int main()
{int ret = check_sys();if (ret == 1){printf("是小端");}else{printf("是大端");}return 0;
}

 

 

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

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

相关文章

高端车规MCU的破局之路

目录 1 低质量的无效内卷 2 高端车规MCU产品共性 2.1 支持标定测量 2.2 低延迟通信加速 2.3 完备的网络安全解决方案 2.4虚拟化 3 国产替代的囚徒困境 1 低质量的无效内卷 近几年&#xff0c;车规MCU国产替代的呼声此消彼长&#xff0c;但仍然集中在低端产品。 从产…

JavaSE-网络编程,正则表达式

1. 网络编程 1.1 概述 Java是 Internet 上的语言&#xff0c;它从语言级上提供了对网络应用程 序的支持&#xff0c;程序员能够很容易开发常见的网络应用程序。 Java提供的网络类库&#xff0c;可以实现无痛的网络连接&#xff0c;联网的底层 细节被隐藏在 Java 的本机安装系统…

鸿蒙首批原生应用!无感验证已完美适配鸿蒙系统

顶象无感验证已成功适配鸿蒙系统&#xff0c;成为首批鸿蒙原生应用&#xff0c;助力鸿蒙生态的快速发展。 作为全场景分布式操作系统&#xff0c;鸿蒙系统旨在打破不同设备之间的界限&#xff0c;实现极速发现、极速连接、硬件互助、资源共享。迄今生态设备数已突破8亿台&…

R语言【taxlist】——tax2traits():将分类信息设置为分类单元特征

Package taxlist version 0.2.4 Description 分类法分类可以包含在taxonRelations插槽提供的信息中的 taxlist 对象中。然而&#xff0c;对于统计分析来说&#xff0c;将这些信息插入到插槽taxonTraits中可能更方便。 Usage tax2traits(object, ...)## S3 method for class …

多openssl版本共存,如何再装一个openssl低版本

在编译安装TrinityCore的时候&#xff0c;碰到报错&#xff1a; 报错&#xff1a; CMake Error at cmake/macros/FindOpenSSL.cmake:579 (message): TrinityCore needs OpenSSL version 1.0 but found too new version . TrinityCore needs OpenSSL 1.0.x or 1.1.x to wor…

软考复习之数据结构篇

算法设计 迭代法&#xff1a;用于求方程的近似根。 1、若方程无解&#xff0c;则算法求出的近似根序列就不会收敛&#xff0c;迭代过程会变成死循环&#xff0c;因此在使用迭代算法前应先考查方程是否有解&#xff0c;并在程序中对迭代的次数给予限制。 2、方程虽有解&#…

OpenSSH 9.6/9.6p1 (2023-12-18)的发布说明(中文译文)

OpenSSH 9.6/9.6p1 (2023-12-18) OpenSSH 9.6 于 2023 年 12 月 18 日发布。相关镜像位于OpenSSH。OpenSSH 是 100% 完整的 SSH 协议 2.0 实现包括 sftp 客户端和服务器支持。 再次感谢 OpenSSH 社区的帮助,继续支持该项目&#xff0c;特别是那些将代码或补丁、报告的错误、…

第十一篇【传奇开心果系列】BeeWare的Toga开发移动应用示例:Briefcase和Toga 哥俩好

传奇开心果博文系列 系列博文目录BeeWare的Toga开发移动应用示例系列博文目录一、前言二、Briefcase和toga各自的主要功能分别介绍三、使用Toga 开发移动应用Briefcase工具是最佳拍档四、Briefcase搭档Toga创建打包发布联系人移动应用示例代码五、运行测试打包发布六、归纳总结…

二、Vue3文件目录介绍

node_modules: 项目的依赖库&#xff1b; src &#xff1a; 我们主要操作的地方&#xff0c;组件的增加、修改等都在这个文件夹里操作&#xff1b; assets: 放置静态资源&#xff0c;包括公共的 css 文件、 js 文件、iconfont 字体文件、img 图片文件 以及其他资源类文件。之所…

RabbitMQ之三种队列之间的区别及如何选型

目录 不同队列之间的区别 Classic经典队列 Quorum仲裁队列 Stream流式队列 如何使用不同类型的队列​ Quorum队列 Stream队列 不同队列之间的区别 Classic经典队列 这是RabbitMQ最为经典的队列类型。在单机环境中&#xff0c;拥有比较高的消息可靠性。 经典队列可以选…

数据库管理-第141期 DG PDB - Oracle DB 23c(20240129)

数据库管理141期 2024-01-29 第141期 DG PDB - Oracle DB 23c&#xff08;20240129&#xff09;1 概念2 环境说明3 操作3.1 数据库配置3.2 配置tnsname3.3 配置强制日志3.4 DG配置3.5 DG配置建立联系3.6 启用所有DG配置3.7 启用DG PDB3.8 创建源PDB的DG配置3.9 拷贝pdbprod1文件…

2023年算法CDO-CNN-BiLSTM-ATTENTION回归预测(matlab)

2023年算法CDO-CNN-BiLSTM-ATTENTION回归预测&#xff08;matlab&#xff09; CDO-CNN-BiLSTM-Attention切诺贝利灾难优化器优化卷积-长短期记忆神经网络结合注意力机制的数据回归预测 Matlab语言。 切诺贝利灾难优化器Chernobyl Disaster Optimizer (CDO)是H. Shehadeh于202…

薅运营商羊毛?封杀!

最近边小缘在蓝点网上看到一则消息 “浙江联通也开始严格排查PCDN和PT等大流量行为 被检测到可能会封停宽带”。 此前中国联通已经在四川和上海等多个省市严查家庭宽带 (部分企业宽带也被查) 使用 PCDN 或 PT&#xff0c;当用户的宽带账户存在大量上传数据的情况&#xff0c;中…

Jupyter notebook文件默认存储路径以及更改方法

目录 1、文件默认存储路径怎么查&#xff1f;2、文件默认存储路径怎么改&#xff1f; 转自&#xff1a;https://blog.csdn.net/fengyeer20120/article/details/109483362 初次使用Jupyter Notebook&#xff0c;确实好用啊&#xff01;但安装Anaconda后&#xff0c;打开Jupyter …

gorm框架之常用增删改查(CRUD)

最好的文档其实是官方的文档&#xff0c;大家可以参考这个文档链接&#xff0c;本文也只是个搬运工&#xff1a; GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly. 新建&#xff08;create&#xff09; 新建单条记录 一般新建记录…

cocos creator 调用预设体Prefab中的方法(调用另一个节点的方法)

调用预设体中的方法 通过cc.instantiate(this.star)创建这个预设体实例这个star预设体中添加了一个脚本组件star.ts 获取到这个脚本组件star.getComponent(‘star’).test()&#xff0c;并调用其中的test()方法同理可以用该方式像另一个节点中传值 //星星预设体property(cc.Pr…

[深度学习]paddleocrv4模型推理要比v3版本慢很多原因

请问为何 Mkldnn 在 ChineseV4 下运行会比 Onnx 和 Openblas 慢很多&#xff1f; 资料来源&#xff1a;https://github.com/sdcb/PaddleSharp/issues/75 qaqz111 commented on Dec 6, 2023 • edited 按 Readme 里面的说明来看&#xff0c;貌似 mkl 比 openblas 是要快的&…

【PostGIS】POSTGIS实现聚类统计提取外轮廓

项目需求根据某些条件进行聚类统计&#xff0c;然后返回聚类的外轮廓&#xff0c;这里主要用到POSTGIS的两个算法&#xff0c;一个是聚类统计功能&#xff0c;一个是提取外轮廓的功能。 1. 聚类统计 Postgis主要实现并提供了四种聚类方法&#xff0c;前两个为窗口函数&#x…

【动态规划】【图论】【C++算法】1575统计所有可行路径

作者推荐 【动态规划】【字符串】【行程码】1531. 压缩字符串 本文涉及知识点 动态规划汇总 图论 LeetCode1575统计所有可行路径 给你一个 互不相同 的整数数组&#xff0c;其中 locations[i] 表示第 i 个城市的位置。同时给你 start&#xff0c;finish 和 fuel 分别表示出…

RK3568 Android 13 系统裁剪

android 13 系统裁剪是个大工程&#xff0c;裁剪也是需要大量的测试&#xff0c;才能保证系统的稳定性&#xff0c;以下是RK官方给出的裁剪方案&#xff0c;有兴趣的可以去看一下&#xff0c;对裁剪不是要求过高的可以根据官方的建议&#xff0c;对系统进行裁剪: Rockchip And…