0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是字节序?字节序重要吗?

星星科技指导员 来源:嵌入式计算设计 作者:Colin Walls 2022-06-29 15:20 次阅读

那是 1981 年(是的——将近 40 年前!),我们正在构建一个系统,其中包含一个 DEC PDP-11 小型计算机,该小型计算机通过共享内存与德克萨斯 TMS990 微处理器接口。这些都是 16 位处理器,所以我们将数据作为字传递。但是发生了一些奇怪的事情:一个 CPU 会将一个值写入共享内存的一个字中,但是当另一个 CPU 读出它时,字节被交换了。解决这个问题很简单:只需在一侧编写一个简单的访问例程来交换字节并确保它始终用于访问共享内存。直到后来才知道为什么会出现这个问题。

在几乎所有现代嵌入式系统中,内存都是按字节组织的。但是,CPU 也可以将数据处理为 16 位或 32 位字。在这种情况下,需要决定如何将字中的字节存储在内存中。有两个明显的选项和许多其他变体。描述此字节顺序的属性称为“字节顺序”(或有时称为“字节顺序”)。

两种常见的字节序形式是:最低有效字节存储在最低地址(“little-endian”)和最高有效字节存储在最低地址(“big-endian”)。字节顺序还有其他变化,甚至还有存储位的可能性。

广义上讲,使用的字节序是由 CPU 决定的。由于有多种选择,因此不同的半导体供应商为其 CPU 选择不同的字节序也就不足为奇了。英特尔 CPU 传统上是小端的。飞思卡尔倾向于支持大端。大多数现代 CPU 的字节序可以在软件中交换。

嵌入式软件工程师的角度来看,问题是“字节序重要吗?” 并且,“如果有,多少钱?”

当软件开发人员需要考虑字节顺序时,大致有两种情况:

通过通信链路或网络传输的数据

在软件中以多种表示形式处理的数据

前一种情况非常简单——只需遵循或定义协议即可。后者更棘手,需要一些思考。

考虑这段代码:

unsigned int n = 0x0a0b0c0d;

unsigned char c, d, *p;

c = (unsigned char) n;

p = (unsigned char *) &n;

d = *p;

c和d最后会包含什么值?无论字节顺序如何,c 都应该包含值 0x0 d。但是,d的值将取决于字节序。在小端系统上d 将包含 0x0 d;在 big-endian 上,它将具有值0x0a。如果要在n 和unsigned char a之间进行联合,则会观察到同样的效果。

那么,这有关系吗?这么多年前,这对我很重要!但是,请注意,大多数代码可能会独立于字节顺序而编写,我认为几乎所有编写良好的代码都是这样的。但是,如果您确实像我需要的那样构建了字节顺序依赖项,那么良好的文档和注释是必不可少的。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19334

    浏览量

    230186
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10876

    浏览量

    212122
收藏 人收藏

    评论

    相关推荐

    字节跳动否认与中兴通讯合作传闻

    近日,有关字节跳动旗下豆包大模型将内嵌手机并与中兴通讯探讨成立新品牌的消息引发了市场的广泛关注。然而,字节跳动方面对此明确予以否认,称并未与中兴通讯就上述事宜展开讨论。 据字节跳动官方澄清,尽管豆包
    的头像 发表于 12-18 10:08 398次阅读

    四种方法教你判断设备的字节序

    如何判断设备的字节序,提供 4 种方法给大家参考。 首先就是从概念入手。 所谓小端字节序,高字节存放在高地址,低字节存放在低地址;大端字节序
    的头像 发表于 11-28 10:47 294次阅读

    探索字节队列的魔法:多类型支持、函数重载与线程安全

    探索字节队列的魔法:多类型支持、函数重载与线程安全代码难度指数:文章学习重点:参数宏的使用技巧一、引言在嵌入式系统和实时应用中,数据的传输和处理是至关重要的。字节队列(ByteQueue)是一种
    的头像 发表于 11-15 01:08 821次阅读
    探索<b class='flag-5'>字节</b>队列的魔法:多类型支持、函数重载与线程安全

    字节跳动自研视频生成模型Seaweed开放

    近日,字节跳动旗下的AI内容平台即梦AI传来新消息,宣布自研的视频生成模型Seaweed即日起正式面向平台用户开放使用。这一举措标志着字节跳动在AI视频领域迈出了坚实的一步。
    的头像 发表于 11-11 14:31 264次阅读

    字节跳动计划在欧洲设立AI研发中心

    字节跳动正积极布局欧洲市场,计划在该地区设立AI研发中心。据知情人士透露,字节跳动已开始在欧洲寻找LLM(Large Language Model,大语言模型)和AI领域的威廉希尔官方网站 大牛,积极招揽顶尖人才
    的头像 发表于 10-28 11:04 607次阅读

    字节跳动否认与台积电合作AI芯片

    近日,关于字节跳动计划与台积电携手开发AI芯片的报道引发关注。对此,字节跳动迅速作出回应,明确表示该报道不实。字节方面透露,公司确实在芯片领域有所探索,但目前仍处于非常初级的阶段,且这些探索主要聚焦于如何通过芯片威廉希尔官方网站 优化推荐系统
    的头像 发表于 09-19 16:04 281次阅读

    字节跳动回应要进军手机市场

    近日,关于字节跳动秘密启动AI手机研发项目的传闻引起了广泛关注。然而,字节跳动相关人士在12日对此进行了澄清,表示这一消息并不属实。
    的头像 发表于 06-13 11:48 772次阅读

    字节跳动否认AI手机研发项目

    近日,有市场传闻称字节跳动已在两个月前秘密启动了AI手机研发项目,引发业界广泛关注。然而,字节跳动相关人士迅速对此作出回应,表示这些消息并不属实。
    的头像 发表于 06-12 15:54 617次阅读

    字节跳动:未出售TikTok,将持续创新投资

    4月25日晚间,字节跳动在其官方头条号上发表声明,否认外媒有关其寻求出售TikTok大部分股权的不实传闻,表示并无此类打算。据悉,此前有媒体报道称,字节跳动能考虑将TikTok美国业务的多数股权售予沃尔玛。
    的头像 发表于 04-26 10:44 559次阅读

    OpenHarmony语言基础类库【@ohos.buffer (Buffer)】

    Buffer对象用于表示固定长度的字节序列,是专门存放二进制数据的缓存区。
    的头像 发表于 04-23 17:34 889次阅读
    OpenHarmony语言基础类库【@ohos.buffer (Buffer)】

    Linux网络编程

    :面向报文,不可靠,(类似于双方发短信),适用于数据量大且不需要准确传输 进程间通信是基于Linux内核的,不适用于两台手机之间的通信。   字节序: 小端:将低序字节存储在起始地址 大端:将高序字节存储在起始地址 电脑是小端
    的头像 发表于 03-26 10:58 344次阅读
    Linux网络编程

    字节跳动开启新一轮期权回购

    字节跳动最近进行了新的期权回购,这次回购的价格对于现任员工和离职员工有所区别。据消息透露,现任员工的回购价格为170美元/股,而离职员工的回购价格则为145美元/股。这种差别待遇引发了外界的关注和讨论,但是字节跳动方面目前尚未对此消息做出回应。
    的头像 发表于 03-07 10:04 697次阅读

    字节跳动被曝正秘密研发多个AI产品

    据多位知情人士透露,科技巨头字节跳动正在人工智能(AI)大模型领域秘密研发多个创新产品。其中,多模态数字人产品备受瞩目,该产品将结合先进的AI威廉希尔官方网站 与虚拟形象,为用户提供全新的交互体验。此外,字节跳动还在研发AI生图、AI生视频产品,这标志着公司在AI内容生成领域迈出了
    的头像 发表于 03-05 11:22 1004次阅读

    字节跳动「突袭」交换机!

    因为字节跳动自研交换机,早在2019年,就开始悄悄布局了。
    的头像 发表于 02-26 15:34 1535次阅读
    <b class='flag-5'>字节</b>跳动「突袭」交换机!

    GD32 MCU的选项字节是什么?

    GD32 MCU的选项字节是什么,有什么功能呢?选项字节被误篡改如何回复?
    的头像 发表于 01-17 09:42 1419次阅读
    GD32 MCU的选项<b class='flag-5'>字节</b>是什么?