存储概念|详解大小端存储

news/2024/12/20 2:26:57/


0.前言

1.数据的高位和低位

2.高地址和低地址 

3.大端存储和小端存储 

4.为什么会有大小端存储

5.验证C语言的数据的存储是大端还是小端


0.前言

大小端存储是计算机存储的一个设计概念,涉及了高地址和低地址,数据的高位和低位等概念,所以在理解大小端存储之前,需要知道什么是高地址和低地址,什么是数据的高位和低位这些概念。

1.数据的高位和低位

数据的高位是数据的左边位置的数,数据的低位是数据右边位置的数,数据的高位和低位又称高字节和低字节。

拿一个十进制数来讲,例如简单的1234,那么数据的高位是在左边,也就是1是1234的高位数据的低位是在数据的右边,4是数据的低位高位和低位是一个相对的概念,在1234中,相对于4,1是高位,相对于1,4是低位。如图所示

 拿八位二进制数来讲,1111 0000是八位二进制数,类似的,1111是数据的高位,而0000是数据的低位

2.高地址和低地址 

为了便于管理存储地址,给地址进行编号,值较大的地址是高地址,值较小的地址是低地址

 拿4位16进制的数来讲,该数表示一个地址,例如0xFFFF和0x0000,则0xFFFF则是高地址,0x0000则是低地址,如图所示。

3. 大端存储和小端存储 

大端存储,是将数据的低位字节放到高地址处,高位字节放到低地址处。

小端存储,是将数据的低位字节放到低地址处,高位字节放到高地址处。

大端存储和小端存储记忆时,可以理解为将低位字节放到大端还是小端?大端存储就是将低为放到高地址,小端就是将低位放到低地址,这样方便记忆

例如将4位16进制数存储到地址中,数据为0x1234,如图所示

 大端存储和小端存储并没有优劣之分

4.为什么会有大小端存储

对于位数大于8的处理器,寄存器的宽度大于1个字节,那么将会存在如何将多个字节安排在寄存器内,就可以有大小端存储两种方法,大小端存储并没有优劣之分,都是存储的方法

 5. 验证C语言的数据的存储是大端还是小端

//判断大小端
//假设右边是高地址,左边是低地址
int main()
{int a = 1; // 0x0000 0001//如果是大端 低位字节放到高地址,高位字节放到低地址//00 00 00 01//如果是小端 高位字节放到高地址,低位字节放到低地址//01 00 00 00char* p = (char*)&a; //字符指针只读1个字节,读8位//如果是大端存储,则p读取的值是0//如果是小端存储,则p读取的值是1if (*p == 1)printf("小端\n");elseprintf("大端\n");return 0;
}

http://www.ppmy.cn/news/1098967.html

相关文章

Delphi、C# 和 TypeScript 之父 Anders Hejlsberg(安德斯·海尔斯伯格,海神)赶潮AI

自2022年11月ChatGPT横空出世,一波由AIGC引发的热潮轰轰烈烈持续传播。 全球各国政府及大型互联网企业都在积极布局人工智能解决方案,抢占人工智能高地,推动人工智能产业健康发展。 Delphi、C# 和 TypeScript 之父,位列Microsof…

复制tr的一行数据或者复制数据使用,使用jq和php

效果图&#xff1a; 2.Html <!--复制的tr数据&#xff0c;s----------------------------------------------------------------------------------------------->{foreach from$arrs keykk itemvv} <tr><td style"text-align:center;" >1</t…

[运维|系统] go程序设置开机启动踩坑笔记

参考文献 记systemctl启动go程序 在Ubuntu上作为systemctl服务运行时Go找不到文件 go语言程序设置开机启动&#xff0c;配置不生效 需要在服务配置文件中加入工作目录配置&#xff0c;示例 WorkingDirectory/path/to/go/program/directory

P2111 考场奇遇 ( 期望dp

#include <bits/stdc.h> using namespace std; using VI vector<int>; double dp[2000010];int n,q; double a; string s; //1 表示答案一样 0表示答案不一样 //答案一样时 正确的概率为 a 不一样时正确的概率为 1 - a //第 i 个题目时&#xff0c;至少对j个题目…

C/C++之链表的建立

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力&#xff0c;一起奔赴大厂。 目录 1.头插 1.1简介 1.2代码实现头插 …

判断动物知识竞猜答案正误

判断动物知识竞猜答案正误 教学目标 1&#xff0e; 知识与技能&#xff1a; 结合实例&#xff0c;理解选择结构。掌握if语句的基本格式&#xff0c;掌握关系运算符。 过程与方法&#xff1a; 学会使用if编程解决实际生活中的一些问题。 情感态度与价值观&#xff1a; 教…

【实训】“宅急送”订餐管理系统(程序设计综合能力实训)

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 前言 大一小学期&#xff0c;我迎来了人生中的第一次实训…

Bean 的生命周期总结

目录 一、Bean生命周期的五个阶段 Bean的初始化 二、PostConstruct 和 PreDestroy 各自的效果 三、 实例化和初始化的区别 四、为什么要先设置属性在进⾏初始化呢&#xff1f; 一、Bean生命周期的五个阶段 Java 中的公共类称之为 Bean 或 Java Bean&#xff0c;而 Spring 中的…