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

计算机基础:小端字节序

专栏导航

上一篇:计算机基础:内存模型

回到目录

下一篇:MFC 第一章概述

本节前言

想要学习本节知识,需要具备的先修课节,如下所示。

参考课节 :计算机基础:内存模型

参考课节:计算机基础:二进制基础10,用十六进制来查数

参考课节:计算机基础:二进制基础11,十六进制的位基和位权

有可能,我这里所提供的参考课节还不够。如果真的不够,请你根据自己的情况,在专栏目录里面,寻找相应的课节,来予以学习。

本节,我们要去讲解的,是小端字节序。

一.    无符号整型数据存储

为了了解小端字节序,我们从无符号整型数据的存储开始讲起。

假定,我们想要将一个 unsigned int 类型的整数 0x10203040 存储在内存地址 0x9000 位置,则数据会如何来存储呢?

一个 unsigned int 类型的数据,占用的内存空间为 4 个字节。而内存的起始地址为 0x9000,所以,本次的数据存储,所涉及的内存地址,为 0x9000,0x9001,0x9002,0x9003 。

为了存储规定的数据,可以有两种存储方式。

方式一:

[0x9000] = 0x10,[0x9001] = 0x20,[0x9002] = 0x30,[0x9003] = 0x40 。

其中,以式子【[0x9000] = 0x10】为例,它的意思是,内存 0x9000 的位置,存储着 0x10 这个数据。

我们再来看第二种存储数据的方式。

方式二:

[0x9000] = 0x40,[0x9001] = 0x30,[0x9002] = 0x20,[0x9003] = 0x10 。

在以上两种方式里面,第一种存储方式,高位字节的数据存储在低地址,低位字节的数据存储在高地址里面。这种存储方式,叫做大端字节序,也叫做大尾数。也有可能,你会见到大端顺序这样的叫法,以及其他的叫法,你应该根据上下文,推知它指的是大端字节序。

第二种存储方式,低位字节的数据存储在低地址,高位字节的数据存储在高地址里面。这种存储方式,叫做小端字节序,也叫做小尾数。也有可能,你会见到小端顺序这样的叫法,以及其他的叫法,你应该根据上下文,推知它指的是小端字节序。

英特尔处理器,在存储数据的时候,采取的存储方式,为小端字节序。

而我们平时所用的个人电脑,多为英特尔架构的电脑,所以呢,本节的标题,为小端字节序。

二.    存储例题

在这里,我们给出两个例题,来让大家巩固对小端字节序理解。

(一)例题1

假定下方代码中,p_ushort 的值为 0x1000,给出各个数组元素的存储情况。

unsigned short p_ushort[] = {0x1020, 0x3102, 0x3042}

由于 p_ushort[0] = 0x1020,所以,[0x1000] = 0x20, [0x1001] = 0x10 。

由于 p_ushort[1] = 0x3102,所以,[0x1002] = 0x02, [0x1003] = 0x31 。

由于 p_ushort[0] = 0x3042,所以,[0x1004] = 0x42, [0x1005] = 0x30 。

综上:[0x1000] = 0x20, [0x1001] = 0x10,[0x1002] = 0x02 。

[0x1003] = 0x31,[0x1004] = 0x42, [0x1005] = 0x30 。

(二)例题2

假定下列代码中,p_uint 的值为 0x3000,给出各个元素的存储情况。

unsigned int p_uint[] = {0x10358320, 0x32410309, 0x20104090};

由于 p_int[0] = 0x10358320, 所以 [0x3000] = 0x20, [0x3001] = 0x83 。

[0x3002] = 0x35, [0x3003] = 0x10 。

由于 p_int[1] = 0x32410309, 所以 [0x3004] = 0x09, [0x3005] = 0x03 。

[0x3006] = 0x41, [0x3007] = 0x32 。

由于 p_int[2] = 0x20104090, 所以 [0x3008] = 0x90, [0x3009] = 0x40 。

[0x300A] = 0x10, [0x300B] = 0x20 。

到了这里,本节就算是讲完了。

结束语

本节的知识,其实是不难的。

希望大家能够学会本节的知识。

 专栏导航

上一篇:计算机基础:内存模型

回到目录

下一篇:MFC 第一章概述

http://www.lryc.cn/news/588213.html

相关文章:

  • muduo面试准备
  • 算法:投票法
  • Debezium日常分享系列之:Debezium 3.2.0.Final发布
  • 观察应用宝进程的自启动行为
  • JAVA经典单例模式
  • 分布式系统中设计临时节点授权的自动化安全审计
  • 生信技能74 - WGS插入片段长度分布数据提取与绘图
  • Vue3 学习教程,从入门到精通,Vue 3 表单控件绑定详解与案例(7)
  • Linux连接跟踪Conntrack:原理、应用与内核实现
  • 分布式一致性协议
  • 零基础 “入坑” Java--- 十一、多态
  • 详解同步、异步、阻塞、非阻塞
  • 12.4 Hinton与Jeff Dean突破之作:稀疏门控MoE如何用1%计算量训练万亿参数模型?
  • UM680A模块接地与散热和封装推荐设计
  • MIPI DSI(三) MIPI DSI 物理层和 D-PHY
  • 2D和3D激光slam的点云去运动畸变
  • SLAM 前端
  • Doll靶机渗透
  • openEuler系统PCIE降速方法简介
  • 基于YOLOV8的烟火检测报警系统的设计与实现【全网独一、报警声音机制、实时画面、系统交互、日志记录】
  • SSM框架学习——day1
  • MySQL窗口函数详讲
  • VUE3 添加长按手势
  • Web 前端面试
  • C++-linux 7.文件IO(一)系统调用
  • Day34 Java方法05 可变参数
  • OSPF高级特性之GR
  • 现有医疗AI记忆、规划与工具使用的创新路径分析
  • 【Java笔记】七大排序
  • Android Studio C++/JNI/Kotlin 示例 二