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

    文章

    20149

    浏览量

    247167
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11217

    浏览量

    222953
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    网络通讯的结构及地址

    { sa_family_tsin_family;// 地址族:必须为AF_INET(IPv4) in_port_t sin_port;// 端口号(网络字节序) struct in_addrsin_addr;// IP地址(网络字节序
    发表于 11-17 07:59

    DBC解析:信号位置与物理值计算

    起始位、位数和字节序定义。在案例中,发动机转速信号的起始位是24,位数是16,摩托罗拉的字节序是24。因此,在收到的原始CAN(FD)报文的64位数据中,在摩托罗
    的头像 发表于 10-31 11:37 249次阅读
    DBC解析:信号位置与物理值计算

    LC87F0K08A 8位微控制器8K字节闪存ROM/384字节RAM规格书

    电子发烧友网站提供《LC87F0K08A 8位微控制器8K字节闪存ROM/384字节RAM规格书.pdf》资料免费下载
    发表于 07-17 15:33 0次下载

    机智云亮相字节豆包AIoT开源生态沙龙

    近日,字节跳动火山引擎2025原动力大会在北京隆重召开,同期由机智云、火山引擎、扣子发起,联合CSDN、GitCode、广和通、奕斯伟、爱湾学院共同参与的“开源智联·具身同行”字节豆包AIoT开源
    的头像 发表于 06-16 09:50 752次阅读

    字节豆包大模型团队提出稀疏模型架构

    字节跳动豆包大模型Foundation团队近期研发出UltraMem,一种创新的稀疏模型架构,旨在解决推理过程中的访存问题,同时确保模型效果不受影响。
    的头像 发表于 02-13 15:25 1017次阅读

    字节跳动否认赵明加盟及自研手机传闻

    近日,市场传出荣耀前CEO赵明即将加盟字节跳动,并可能主导其手机业务的消息。与此同时,还有传闻称字节跳动有意推出主打AI概念的手机产品,这一系列传闻引发了业界的广泛关注。 针对这些传闻,字节跳动在2
    的头像 发表于 02-10 09:12 857次阅读

    赵明加盟字节跳动传闻不实

    近日,网络上流传出荣耀前CEO赵明将加盟字节跳动并负责手机业务的消息,引发了广大网友的广泛关注。然而,据今日媒体报道,字节跳动对此传闻进行了回应,明确表示“信息不实”。 回顾今年1月,荣耀官方宣布
    的头像 发表于 02-08 09:50 865次阅读

    字节跳动否认120亿美元投资AI基础设施传闻

    近日,有市场传闻称字节跳动计划在今年对人工智能基础设施进行大规模投资,总额超过120亿美元。这一消息引发了广泛关注,因为如此巨额的投资将显示出字节跳动在AI领域的坚定决心和强大实力。 传闻中,字节
    的头像 发表于 01-24 10:14 964次阅读

    快讯:字节跳动否认120亿美元投资AI

    对于传闻中的字节跳动计划2025年在人工智能基础设施上投入超120亿美元的消息,字节跳动回应称消息并不准确。    
    的头像 发表于 01-23 15:45 757次阅读

    字节跳动豆包大模型1.5 Pro发布

    近日,字节跳动旗下的豆包大模型迎来了全新的升级——豆包大模型1.5 Pro正式发布。这款全新模型在知识、代码、推理、中文等多个测评基准上表现出色,综合得分优于GPT-4o、Claude 3.5 Sonnet等业界知名模型,标志着字节跳动在AI技术领域的又一次重大突破。
    的头像 发表于 01-23 15:24 1109次阅读

    字节跳动2025年AI基础设施投入超120亿美元

    据报道,字节跳动计划在2025年对人工智能基础设施进行大规模投资,总金额预计将超过120亿美元。这一战略决策显示出字节跳动对AI技术的深度押注,期望借此推动公司的持续增长和创新。
    的头像 发表于 01-22 15:37 1352次阅读

    字节跳动与努比亚合作开发AI手机

    近日,有消息称字节跳动已经选择努比亚作为其合作伙伴,共同开发AI手机。据悉,双方已经签订了框架协议,明确了合作的具体内容和时间表。 根据协议内容,字节跳动和努比亚将携手推进AI手机的研发工作。到
    的头像 发表于 01-03 14:48 1721次阅读

    字节TikTok算法负责人陈志杰或离职创业

    TikTok的快速发展做出了重要贡献。他的离职无疑将对字节跳动的算法团队产生一定影响。 然而,知情人士透露,陈志杰已经开始了他在AI领域的创业之旅。据悉,他的创业方向聚焦于AI Coding,这是一个结合了人工智能与编程技术的前沿领域。通
    的头像 发表于 12-25 10:39 1295次阅读

    苹果探讨与腾讯、字节跳动终端AI合作

    本土AI模型。 具体而言,苹果希望通过与腾讯和字节跳动的合作,将其全球AI战略的重要组成部分——Apple Intelligence,与这两家公司在AI领域的先进技术相结合。此举旨在更好地适应中国市场的特殊需求,提升用户体验,并进一步加强苹果在中国市场
    的头像 发表于 12-20 10:17 899次阅读

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

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