博客
关于我
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主从不同步
查看>>
mysql主从同步及清除信息
查看>>
MySQL主从同步相关-主从多久的延迟?
查看>>
mysql主从同步配置方法和原理
查看>>
mysql主从复制 master和slave配置的参数大全
查看>>
MySQL主从复制几个重要的启动选项
查看>>
MySQL主从复制及排错
查看>>
mysql主从复制及故障修复
查看>>
MySQL主从复制的原理和实践操作
查看>>
webpack loader配置全流程详解
查看>>
mysql主从复制,读写分离,半同步复制实现
查看>>
MySQL主从失败 错误Got fatal error 1236解决方法
查看>>
MySQL主从架构与读写分离实战
查看>>
MySQL主从篇:死磕主从复制中数据同步原理与优化
查看>>
mysql主从配置
查看>>
MySQL之2003-Can‘t connect to MySQL server on ‘localhost‘(10038)的解决办法
查看>>
MySQL之CRUD
查看>>
MySQL之DML
查看>>
Mysql之IN 和 Exists 用法
查看>>