处理器的大小端及位序

2023-05-16

大端Big Endian:数据的高字节存储到低位地址中
小端little Endian:数据的低字节存储到低位地址中
举例说明:
32位16进制数据为=0x12345678,

大端存储

地址 0x0 0x1 0x2 0x3
数据 0x12 0x34 0x56 0x78
MSB LSB

小端存储

地址 0x0 0x1 0x2 0x3
数据 0x78 0x56 0x34 0x12
LSB MSB

MSB是Most Significant Bit的缩写,指最高有效位
LSB是Least Significant Bit的缩写,指最低有效位。

处理器基本上都是字节编址,无法直接操作位,但是在C语言中,可以用结构体来实现对位的操作,其语法规定:先声明的成员位于低地址,后声明的成员位于高地址。

举例,以小端处理器为例,
struct onebyte {
unsigned char bt0:1,
bt1:1,
bt2:1,
bt3:1,
bt4:1,
bt5:1,
bt6:1,
bt7:1;
};

main{
ch= 0x98;
struct onebyte byte=(struct onebyte)&ch;
printf(“bt0 is :%u\n”,byte->bt0);
printf(“bt1 is :%u\n”,byte->bt1);
printf(“bt2 is :%u\n”,byte->bt2);
printf(“bt3 is :%u\n”,byte->bt3);
printf(“bt4 is :%u\n”,byte->bt4);
printf(“bt5 is :%u\n”,byte->bt5);
printf(“bt6 is :%u\n”,byte->bt6);
printf(“bt7 is :%u\n”,byte->bt7);
}
打印结果为:
bt0 is :0
bt1 is :0
bt2 is :0
bt3 is :1
bt4 is :1
bt5 is :0
bt6 is :0
bt7 is :1

说明一个字节内,小端处理器是按照LSB<->MSB的顺序进行
bit0 bit1 bit2 bit3 bit4 bit5 bit6 bit7
0 0 0 1 1 0 0 1
LSB MSB

对于大端处理器其位序正好与小端处理器相反
bit0 bit1 bit2 bit3 bit4 bit5 bit6 bit7
1 0 0 1 1 0 0 0
MSB LSB

所以如果大端处理器的数据如果期望向小端处理器系统传输数据就需要进行转换,以0x98数据为例,大端处理器的0x98如果期望小端处理器也认为是0x98,那么其写存储器时就必须按照自己的0x19去写入存储器,这样小端处理器直接从mem读取后就会认为是0x98.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理器的大小端及位序 的相关文章

  • cmake:string

    字符串操作 概要 Search span class token operator and span Replace span class token function string span span class token punctu
  • 性能:你知道并发用户数应该怎么算吗

    我们知道 xff0c 一个性能测试中 xff0c 往往会有各种各样的指标 xff0c 比如TPS RPS QPS HPS CPM等 我们在实际工作的时候 xff0c 应该对这些概念有统一的认识 建议使用TPS作为关键的性能指标 另外 xff
  • C/C++面试:手写智能指针类

    shared ptr原理 shared ptr实际上是对裸指针进行了一层封装 xff0c 成员变量除了裸指针之外 xff0c 还有一个引用计数 xff0c 它记录裸指针被引用的次数 xff08 有多少个shared ptr指向这同一个裸指针
  • golang:http.request

    request 表示由服务器接收或由客户端发送的HTTP请求 xff0c 例如客户端 client 在发送各种请求时 xff0c 需要先新建一个请求对象 xff0c 然后调用一些请求的方法开始自定义一些配置 xff0c 服务端监听到该请求便
  • git:smartgit

    下载安装smartgit 下载 xff1a https www syntevo com smartgit download 终端下操作 xff1a 执行命令 xff1a tar xvf smartgit tar gz 执行命令 xff1a
  • golang:如何在proto3中用上golang对应的interface{}类型

    首先 xff0c 我希望所有golang中用于http请求响应的结构 xff0c 都使用proto3来定义 麻烦的是 xff0c 有的情况下某个字段的类型可能是动态的 xff0c 对应的JSON类型可能是number string bool
  • 如何计算icmp校验和

    前几天看到大佬写的一篇关于icmp远控后门文章 xff0c 对icmp协议充满了激情 xff0c 通过查阅资料了解相关所需的知识 xff0c 实现整个程序首先要了解imcp包请求与回复 xff0c 在整个请求中最先就涉及到icmp包的构造
  • 作为一个自动化本科生到底应该学些什么(讲讲个人经历和感受)

    2019 6 26日深夜 晚上在床上准备休息 xff0c 一个同跟我聊天说自己大学荒废了 xff0c 突然有很多感想想写一写 我觉得自己大学也是得过且过地过着的 xff0c 不过虽然充满艰辛和不满意 xff0c 但还是挺充实的 先自我介绍一
  • 嵌入式项目实战——基于QT的视频监控系统设计(一)

    嵌入式项目实战 基于QT的视频监控系统设计 xff08 一 xff09 这个五一因为疫情 xff0c 只能待在家里 xff0c 想了想不如将我之前做的一个小的嵌入式的练习项目分享出来 xff0c 供入门嵌入式的同学们学习 基于QT的视频监控
  • 嵌入式项目实战——基于QT的视频监控系统设计(三)

    嵌入式项目实战 基于QT的视频监控系统设计 xff08 三 xff09 进入到五一假期第三天 xff0c 继续我们的项目 本来五一假期还是想好好休息一下的 xff0c 因为最近学习的状态不太好 xff0c 刷题都没有思路了 xff0c 但是
  • 嵌入式开发板RS485协议串口编程——角度传感器数据读取

    嵌入式开发板RS485协议串口编程 倾角传感器数据读取 之前分享过一篇嵌入式操作系统开发板中的串口编程 光敏电阻数据读取 xff0c 是基于TTL协议的串口编程 xff0c 本节主要讲述基于RS485协议的串口编程 xff0c 掌握了这两种
  • 嵌入式开发板CAN通信编程——伺服电机驱动

    嵌入式开发板CAN通信编程 伺服电机驱动 在实际的嵌入式项目开发过程中 xff0c 若不涉及上位机与开发板的通信传输数据 xff0c 那最关键的无非就是两个内容 xff0c 读取传感器的数据并处理 xff0c 驱动硬件设备工作 传感器数据的
  • 嵌入式字符设备驱动——ULN2003步进电机驱动程序实现

    嵌入式字符设备驱动 ULN2003步进电机驱动程序实现 之前分享了字符设备驱动程序的实现 hello驱动 xff0c 是不涉及硬件操作的 xff0c 我说过要给大家分享一篇涉及硬件操作的字符设备驱动程序的实现 xff0c 今天周末休息 xf
  • Linux多进程间通信——共享内存实现

    Linux多进程间通信 共享内存实现 又到了每周分享时刻 xff0c 这周我要分享的是关于Linux中进程间通信问题 xff0c 这对于底层程序的实现至关重要 xff0c 进程间通信方式主要包括管程 共享内存 消息传递 套接字这几种方式 x
  • 嵌入式开发板RS485多节点串口编程——关节力矩传感器数据读取

    嵌入式开发板RS485多节点串口编程 关节力矩传感器数据读取 最近学业繁忙 xff0c 主要是准备找工作 xff0c 有一段时间没分享了 xff0c 今天给大家分享一下我最近利用TI AM4376开发板RS485串口读取两个关节力矩传感器的
  • Linux多进程间通信——管道通信实现

    Linux多进程间通信 管道通信实现 之前分享了linux多进程间通信的两种方法 xff0c 套接字和共享内存通信 今天来分享一下另外一种多进程通信方法 管道 管道分为有名管道和无名管道 无名管道用于有亲缘关系之间的进程 xff0c 即父子
  • Linux多进程间通信——消息传递实现

    Linux多进程间通信 消息队列实现 之前已经分享了共享内存 管道 套接字来实现多进程的通信 xff0c 下面再介绍一下消息队列 xff0c 后面我还会再介绍最后一个多进程的通信方式 xff0c 通过信号来实现 xff0c 这样多进程通信的
  • RS485总线究竟能挂接多少个设备?

    N年前做门禁系统上位机软件开发的时候突击培训过串口通信编程基础 后来在我的脑海里一直认为RS485总线能且只能挂接256个设备 xff08 因为地址是1byte xff0c 取值范围也就0 255 xff09 后来经过几个项目的了解 xff
  • Python Raw Socket使用示例(发送TCP SYN数据包)

    python view plain copy import sys import time import socket import struct import random def SendPacketData Buffer 61 Non
  • mysql-server 依赖 mysql-server-5.5 解决方案

    问题 ubuntu14 04 3安装mysql时报错 xff1a sudo apt get install mysql server mysql client 正在读取软件包列表 完成 正在分析软件包的依赖关系树 正在读取状态信息 完成 有

随机推荐

  • 生成aruco码方法

    有两种方法得到想要的aruco码 xff1a 1 直接通过网址得到 http chev me arucogen xff08 不过只有四个格式 xff09 网页截图为 xff1a 2 通过运行C 43 43 代码得到 利用C 43 43 生成
  • 超详细c语言简化tcp通信接口(多线程实现一个服务端处理多个客户端服务)

    超详细c语言tcp通信接口 1 可下载源码 xff08 客户端 服务端通信 xff09 2 说明3 接口代码4 客户端通信main client demo c5 服务端通信main server demo c 1 可下载源码 xff08 客
  • 怎么在视频上叠加字幕和Logo--技术实现1

    这篇文章我给大家讲解的这种字幕叠加和Logo叠加方法是在渲染视频的时候 画 上去的 xff0c 其实是通过某种API将OSD和Logo绘制到显卡缓存 xff0c 然后提交缓存到屏幕 我们知道渲染视频有几种常用的API xff1a GDI x
  • opencv源码编译及配置完整版教程(win10+vs2019+opencv-4.4.0+opencv_contrib-4.4.0)

    opencv源码编译及配置完整版教程 xff08 win10 43 vs2019 43 opencv 4 4 0 43 opencv contrib 4 4 0 xff09 一 下载vs2019 官网下载 xff1a https visua
  • c++使用多个库的头文件内容里有名字相同问题

    首先说下结构体 xff0c 如果两个头文件定义的结构体内容不一样 xff0c 但名字一样 xff0c 当一个文件同时包含着两个头文件的时候 xff0c 就会报如下错误 xff1a 此时 xff0c 在不修改头文件的情况下 最好不要改动 xf
  • 蓝牙模块 HC08_两个STM32开发板无线通信

    一 HC08重要参数 蓝牙4 0 xff0c BLE xff0c 主从一体 xff1b 模块上电后 xff0c 启动需要150ms xff1b UART波特率 xff1a 9600默认 xff1b 空中速率 xff1a 1Mbps 与HC0
  • STM32 --- 使用内部FLASH存储数据

    本文记录了对一些知识点的理解 操作方法 xff0c 如有错误 xff0c 请务必批评指正 xff01 xff01 最终的测试截图 xff1a 目录 一 内部FLASH要点 关于地址 xff1a 关于解锁 xff1a 关于擦除 xff1a 关
  • Keil 代码自动格式化对齐整理 AStyle设置图解

    代码对齐 xff0c 使用前后效果 xff1a 建议 设置成快捷键 xff1a CTRL 43 S xff0c 即可保存 43 对齐 一 下载插件 https sourceforge net projects astyle files as
  • keil5 烧录程序到单片机的方法

    Keil是一种常用的单片机开发工具 xff0c 支持多种单片机芯片 下面详细说明Keil5如何烧录程序到单片机的方法 编译程序 首先 xff0c 在Keil5中打开编写好的程序工程 xff0c 进行编译 编译生成的可执行文件是 hex或 b
  • 基于STM32 + SYN6288语音播报

    完整代码下载 https download csdn net download zhouml msn 85592868 一 接线示例 xff1a 二 模块重点 xff1a 1 xff1a 5V供电 xff0c 功耗约120mA 带图中小喇叭
  • STM32开发---ADC单通道电压采集

    代码zip下载 xff1a https download csdn net download zhouml msn 86666457 spm 61 1001 2014 3001 5501 STM32 ADC单通道电压数据采集 xff0c 直
  • Keil仿真调试Debug不能放断点_图解

    前提 xff1a 正常连接了调试器 43 开发板 xff0c 才能进入Debug模式 xff01 xff01 xff01 一 正常情况 当Keil进入Debug模式 xff0c 正常可以放置断点时的界面 xff0c 是下面这样的 xff1a
  • 无人机(2)_电机

    型号值 如2212 前两位 电机外径 后两位 转子高度KV值 电机空转 时 电压每提高1V 电机转速提高 800转 分钟无刷电机 电机分有刷和无刷 无人机都是无刷 电机 贵 力气大 耐用 电池节数 很重要 一节是4 2V电调大小 A越大越好
  • Linux下运用opencv的简单图像编程

    文章目录 Linux下运用opencv的简单图像编程一 编写一个打开图片进行特效显示的代码 一 用普通方式编译程序1 准备工作 xff1a 2 准备一张图片 xff0c 移到相同目录下3 编译程序4 运行程序 二 用make 43 make
  • 简单stm32程序编写以及调试

    简单stm32程序编写以及调试 一 环境配置 1 MDK的安装 MDK xff08 Microcontroller Development Kit xff09 是针对ARM处理器 xff0c 特别是Cortex M内核处理器的最佳开发工具
  • STM32以中断的方式点亮LED小灯(标准库)

    STM32以中断的方式点亮LED小灯 xff08 标准库 xff09 文章目录 STM32以中断的方式点亮LED小灯 xff08 标准库 xff09 一 认识中断1 中断优先级 xff1a 2 中断嵌套 xff1a 3 中断执行流程4 中断
  • STM32 I2C_OLED显示汉字及屏幕滚动

    STM32 I2C OLED显示汉字及屏幕滚动 文章目录 STM32 I2C OLED显示汉字及屏幕滚动一 I2C以及AHT20温湿度传感器介绍二 用0 96寸OLED屏幕显示数据1 OLED介绍2 样例测试 三 汉字编码原理编码排序A0A
  • # FPGA编程入门

    FPGA编程入门 文章目录 FPGA编程入门一 1位全加器1 原理图1 1原理图1 2 全加器 2 verilog实现1位全加器2 1 代码2 2 编译 xff0c 查看RTL2 3 仿真实现 二 烧录三 4位全加器1 原理图实现4位全加器
  • 基于NIOS-II软核与verilog语言的流水灯实现

    基于NIOS II软核与verilog语言的流水灯实现 文章目录 基于NIOS II软核与verilog语言的流水灯实现1 实验目的2 实验设备3 实验内容4 软核设计4 1 新建一个工程4 2 Qsys 系统设计4 3 进行逻辑连接4 3
  • 处理器的大小端及位序

    大端Big Endian xff1a 数据的高字节存储到低位地址中 小端little Endian xff1a 数据的低字节存储到低位地址中 举例说明 xff1a 32位16进制数据为 61 0x12345678 xff0c 大端存储 地址