博客
关于我
C语言中判断大小端的方法
阅读量:586 次
发布时间:2019-03-11

本文共 998 字,大约阅读时间需要 3 分钟。

存储器模式(SMALL LARGE COMPACT)

C语言中判断大小端的方法

在使用C语言编写程序时,了解系统的存储器模式至关重要。大端模式和小端模式是两种常见的内存存储方式。大端模式表示数据的低位保存在内存的高地址中,而高位保存在低地址中;而小端模式则相反。这一区别的根源在于计算机系统中以字节为单位的内存地址划分。每个地址单元对应一个字节。在C语言中,不仅有8位的char类型,还有16位的short类型、32位的long类型(取决于编译器)。对于宽度超过8位的处理器(如16位或32位的),内存存储方式的选择就显得尤为重要。

举例来说,一个16位的short类型变量x,以内存地址0x0010存储,值为0x1122,其中0x11是高字节,0x22是低字节。在大端模式下,0x11保存在低地址0x0010,0x22保存在高地址0x0011。而在小端模式下,存储情况刚好相反,这可能导致后续数据访问的效率差异。

简单测试代码:

short int x;char x0, x1;x = 0x1122;x0 = ((char*)&x)[0];  // 低地址单元x1 = ((char*)&x)[1];  // 高地址单元

如果x0的值是0x11,则编译器处于大端模式;如果x0是0x22,则表示小端模式。

C51存储器模式

C51编译器提供了三种不同的存储器模式:SMALL、LARGE和COMPACT。这些模式主要决定了变量存储的位置,以及堆栈和函数参数的分配方式。

一般来说,SMALL模式是首选,仅在内存需求严重时才考虑其他模式。尽量使用SMALL模式编译,数据段存储所有内部变量和全局变量,默认参数传递都在数据段中进行。如果需要较大的函数栈,编译器会在内存RAM中分配空间。SMALL模式的优势在于具有较低的内存使用量,感兴趣的读者可以继续高度优化代码。

对于256字节或更少的外部RAM,压缩模式是一个不错的选择。此时,除非有特殊说明,否则变量将分配在PDATA段,参数传递仍在内存RAM中进行。PDATA段的数据可以通过R0和R1进行间接寻址,而使用DPTR需要更慢。与大模式相比,数据访问速度更快,因此需要科学的存储方案。

选择哪种模式需要根据项目需求决定。如果系统所需内存量低于RAM半量,优先选择SMALL模式。

KEIL-C51作为一款功能强大的编译器,以内存使用优化著称。

转载地址:http://turvz.baihongyu.com/

你可能感兴趣的文章
MySQL事务与锁详解
查看>>
MySQL事务原理以及MVCC详解
查看>>
MySQL事务及其特性与锁机制
查看>>
mysql事务理解
查看>>
MySQL事务详解结合MVCC机制的理解
查看>>
MySQL事务隔离级别:读未提交、读已提交、可重复读和串行
查看>>
MySQL事务隔离级别:读未提交、读已提交、可重复读和串行
查看>>
mysql五补充部分:SQL逻辑查询语句执行顺序
查看>>
mysql交互式连接&非交互式连接
查看>>
MySQL什么情况下会导致索引失效
查看>>
Mysql什么时候建索引
查看>>
MySql从入门到精通
查看>>
MYSQL从入门到精通(一)
查看>>
MYSQL从入门到精通(二)
查看>>
mysql以下日期函数正确的_mysql 日期函数
查看>>
mysql以服务方式运行
查看>>
mysql优化--索引原理
查看>>
mysql优化概述(范式.索引.定位慢查询)
查看>>
MySQL优化配置详解
查看>>
Mysql优化高级篇(全)
查看>>