首页 > 其他分享 >大端模式和小端模式

大端模式和小端模式

时间:2023-03-31 14:57:13浏览次数:30  
标签:小端 低位 uint8 模式 地址 bit

1. 定义

这是个老生常谈的问题,定义大家都懂:

大端模式:数据低位存放在内存高位

小端模式:数据高位存放在内存高位

 

2. 数据高低位 VS 地址高低位

比如一个十进制数字:12345678

数据低位就是数据的右边,数据高位就是数据的左边;

地址低位就是地址的左边,地址高位就是地址的右边。

假如一页纸表示内存的话,大端模式刚好符合我们平时写字的习惯:地址低位存放数据高位。

 

3. 大小端的单位:Byte VS bit

很多文档都提到过,大小端是以字节为单位的,我之前也是这样认为的。

假如大小端以字节为单位,那么一个字节内部的bit是如何排列呢?是bit7, bit6, ... bit0?

非也!其实大小端本质上指的是一个 变量内部 数据高低位与地址高低位的的排列关系!

比如0x1234,大端模式排列为:0001 0010 0011 0100,小端模式排列就是bit完全反过来:0010 1100 0100 0001.

 

认识到这个很重要,特别是遇到按bit定义变量的时候。

比如信息传输的时候,一个字节按照bit划分为几部分:

Byte0
    7~5: a
    4~0: b
Byte1
    c

大端模式就需要这么定义结构体:地址低位(先写的、左边的)存放变量高位(a):

struct S {
    uint8 a : 3;
    uint8 b : 5;
    uint8 c;
}

小端模式就需要这么定义结构体:地址低位(先写的、左边的)存放变量低位(b):

struct S {
    uint8 b : 5;
    uint8 a : 3;
    uint8 c;
}

 

标签:小端,低位,uint8,模式,地址,bit
From: https://www.cnblogs.com/moon-sun-blog/p/17112400.html

相关文章

  • 深入探讨:LBS是一种工具而非一种模式
    移动互联网的快速发展,带动着移动互联网应用的不断创新。从2010起,LBS的概念就在中国迅速兴起,但到了2011年底提供LBS服务的企业从最多50家已经降至仅剩15家。投行在看好移动互联网的同时又对LBS模式产生了质疑,最后很多业内人士纷纷表示LBS+O2O会更有发展潜力。在经过2011年在LBS领域......
  • 消费者和生产者模式
    classProductFactory{//定义库存最大privateintstock=10;privateLinkedList<String>products;publicProductFactory(){this.products=newLinkedList<>();}publicsynchronizedvoidproductsStock(Stringprodu......
  • 观察者模式(Observer)
    1,观察者模式  观察者模式是一种行为设计模式,允许你定义一种订阅机制,可在对象事件发生时通知多个“观察”该对象的其他对象。  又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会......
  • Spine在Unity 的URP模式下,描边的坑。
    在urp模式下,spine描边需要特殊处理,首先去。官网下载他们的urp拓展包,然后通过packagemanager导入到项目。打开包里outlineshadersurp场景。发现他们实现这个场景的时候,是在spine动画下面套了一个outline对象,这个outline对象有一个脚本叫做renderexistingmesh。将这个脚本......
  • 责任链模式
    概述《设计模式》一书中对于“责任链模式”的意图描述如下:使多个对象有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止一般的UML结构图如下所示:其中,Handler将会包含直接后继处理类succ......
  • 设计模式(三十)----综合应用-自定义Spring框架-自定义Spring IOC-定义bean、注册表相
    现要对下面的配置文件进行解析,并自定义Spring框架的IOC对涉及到的对象进行管理。<?xmlversion="1.0"encoding="UTF-8"?><beans>  <beanid="userService"class="com.itheima.service.impl.UserServiceImpl">    <propertyname=&qu......
  • IOS中KVO模式的解析与应用
    最近老翁在项目中多处用到了KVO,深感这种模式的好处。现总结如下:一、概述KVO,即:Key-ValueObserving,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。KVO其实也是“观察者”设计模......
  • (二十六)访问者模式
    1.概述访问者模式(Visitor),表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。2.示例Visitor类,为该对象结构中ConcreteElement的每一个类声明一个Visit操作。Visitor.javapublicabstractclassVisitor{......
  • 直线模组常用的驱动模式有哪些?
    直线模组是工业生产中经常用到的直线运动单元,其驱动方式有很多种,但常用的驱动方式通常有两种,一种是滚珠丝杆传动,另一种是同步带传动。滚珠丝杆传动方式的特点是重复定位精度较高,最高精度可达±0.005mm,并且负载一般也比较大,在工业生产中通常被应用于对精度有一定要求的生产过程中。......
  • 单用户模式进centos系统修改root密码
    为虚拟机server重设管理密码1)重启系统,进入recovery恢复模式在读秒时候按e键,找到linux16行,按键盘End末尾添加空格rd.breakconsole=tty0按ctrl+x启动2)......