两种判断计算机大小端模式的方法

两种判断计算机大小端模式的方法

在计算机系统里,数据存储有大端和小端两种模式。大端模式是高字节存在低地址,小端模式是低字节存在低地址。下面结合相关知识,用两种 C 语言方法判断大小端。

一、知识铺垫

(一)大小端存储规则
  • 大端存储(Big - Endian):数据的高字节存储在内存的低地址。比如整数 0x12345678(4 字节),大端模式下,存储地址从低到高依次是 0x120x340x560x78
  • 小端存储(Little - Endian):数据的低字节存储在内存的低地址。还是整数 0x12345678,小端模式下,存储地址从低到高依次是 0x780x560x340x12
    一般 X86 架构采用小端模式,ARM 架构一般采用大端模式(但不绝对)。
    image
(二)printf 长度修饰符

printf 的长度修饰符用于指定输出整数对应的参数类型,只影响输出内容,不改变数据本身。

  • hh:后续整数转换对应 signed charunsigned char 参数(针对输出,取整数低 1 字节)。
  • h:后续整数转换对应 short intunsigned short int 参数(针对输出,取整数低 2 字节)。
(三)联合体特性

联合体变量的成员共用一块内存,每个成员起始地址相同。修改联合体中任意一个成员的值,都会影响其他成员的值,且不应同时对多个成员赋值。

二、判断方法

(一)利用 printf 长度修饰符

我们借助 printf 函数的 hh 长度修饰符,它能将整数转换为 unsigned char 类型输出,只取整数的低 1 字节,通过输出结果判断大小端。
代码如下:

/* by 01022.hk - online tools website : 01022.hk/zh/keyboardcode.html */
#include <stdio.h>
int main() {
    // 输出 0x12345678 的低 1 字节
    printf("%#hhx\n", 0x12345678);
    return 0;
}
  • 若输出 0x12,说明是大端模式,因为大端模式下低地址存储高字节 0x12
  • 若输出 0x78,说明是小端模式,因为小端模式下低地址存储低字节 0x78
    像 X86 架构(小端模式)运行这段代码,可能输出 0x78;ARM 架构(一般大端模式),可能输出 0x12
    image
    可以知道该机器是数据的低位放在低地址空间,数据的高位放在高地址空间,因此是小端模式。
(二)使用联合体(Union)

利用联合体成员共用内存的特性,定义一个包含 int 类型和 char 类型成员的联合体。给 int 成员赋值后,通过 char 成员获取低地址存储的字节,进而判断大小端。
代码如下:

/* by 01022.hk - online tools website : 01022.hk/zh/keyboardcode.html */
#include <stdio.h>
// 定义联合体
union Endian 
{
    int a;
    char b;
};
int main(int argc,char const * argv[]) 
{
    union Endian data;
    // 给 int 成员赋值
    data.a = 0x12345678;
    // 判断低地址存储的字节
    if (data.b == 0x12) {
        printf("Big - Endian\n");
    } else {
        printf("Little - Endian\n");
    }
    return 0;
}
  • data.b 的值是 0x12,说明是大端模式,高字节 0x12 存储在低地址。
  • data.b 的值是 0x78,说明是小端模式,低字节 0x78 存储在低地址。

通过这两种方法,能轻松判断当前计算机的大小端模式,这对涉及底层数据存储和网络字节序转换等场景很有帮助。

基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究(Matlab代码实现)内容概要:本文围绕“基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究”,介绍了利用Matlab代码实现配电网可靠性的仿真分析方法。重点采用序贯蒙特卡洛模拟法对配电网进行长时间段的状态抽样与统计,通过模拟系统元件的故障与修复过程,评估配电网的关键可靠性指标,如系统停电频率、停电持续时间、负荷点可靠性等。该方法能够有效处理复杂网络结构与设备时序特性,提升评估精度,适用于含分布式电源、电动汽车等新型负荷接入的现代配电网。文中提供了完整的Matlab实现代码与案例分析,便于复现和扩展应用。; 适合人群:具备电力系统基础知识和Matlab编程能力的高校研究生、科研人员及电力行业技术人员,尤其适合从事配电网规划、运行与可靠性分析相关工作的人员; 使用场景及目标:①掌握序贯蒙特卡洛模拟法在电力系统可靠性评估中的基本原理与实现流程;②学习如何通过Matlab构建配电网仿真模型并进行状态转移模拟;③应用于含新能源接入的复杂配电网可靠性定量评估与优化设计; 阅读建议:建议结合文中提供的Matlab代码逐段调试运行,理解状态抽样、故障判断、修复逻辑及指标统计的具体实现方式,同时可扩展至不同网络结构或加入更多不确定性因素进行深化研究。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值