美文网首页
CPU大小端问题

CPU大小端问题

作者: AlvinL | 来源:发表于2015-03-31 13:24 被阅读229次

大小端

CPU有大小端之分,大端是指数据的高位数据保存在低位地址,而低位数据保存在高位地址;小端是指数据的低位数据保存在低位地址,而高位数据保存在高位地址。
那为什么会存在这两种模式?在计算机系统中,是以字节为单位的(8bit),但有些类型的数据,如shortintlong是大于一个字节的,而对于大于8位的处理中,其寄存器宽度大于8位,那么从内存中读取大于一个字节的数据的时候,就会涉及到如何安排这些数据的字节的问题,就产生了大小模两种不同方式。
如两个字节的数据0x1234在大端CPU下存放方式:(假设地址从0x1000开始)

内存地址 0x1000 0x1001
存放内容 0x12 0x34

而在小端CPU的存放方式:

内存地址 0x1000 0x1001
存放内容 0x34 0x12

判断大小端

下面是一个C函数,可以用来判断是否是大小端:

bool isLittleEndCPU()
{
    int a = 0x1234;
    char b = (char) a;
    if ((int)b == 0x34)
        return true;
    else
        return false;
}

关键在于char b = (char) a;这一句,aint强制类型转换为charb得到的是低位地址保存的数据,如果为a的低位数据0x34,那么说明是小端模式,反之为大端模式。

相关文章

  • CPU大小端问题

    大小端 CPU有大小端之分,大端是指数据的高位数据保存在低位地址,而低位数据保存在高位地址;小端是指数据的低位数据...

  • 大小端问题

    如果将一个32位的整数0x12345678存放到一个整型变量(int)中,这个整型变量采用大端或者小端模式在内存中...

  • 大小端问题

    什么是大小端? 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式...

  • 大小端问题

    一、定义 大端模式:大端模式就是指把数据的高字节保存在内存的低地址中,数据的低字节保存在内存的高地址中,这和我们一...

  • C语言判断机器CPU大小端模式的两种方法

    C语言判断机器CPU大小端模式的两种方法 本文介绍使用C语言编写程序判断机器CPU大小端模式的两种方法。 第一种方...

  • 大端小端问题

    为什么有大小端问题 大端 小端 解决大小端方法: 或者:

  • 数据大小端问题

    假如有一个4字节的数据为 0x12 34 56 78(十 进制:305419896 ,0x12为高字节,0x78...

  • 单引号是常数值

    单引号是常数,双引是字符串。 单引号是常数值,值跟CPU的大小端架构有关联。 小端Mac上输出值: 小端模式,即...

  • Mach-O

    格式 1. header header 包含了大小端模式,cpu类型,加载command的数量,文件类型等信息 经...

  • iOS 开发之字符编码 大小端问题

    一、什么是大小端问题 (From《ComputerSystems,AProgramer'sPerspective》...

网友评论

      本文标题:CPU大小端问题

      本文链接:https://www.haomeiwen.com/subject/zvkoxttx.html