大小端(字节序)存储模式

简介: 大小端(字节序)存储模式


目录

引言

大端(字节序)存储模式

小端(字节序)存储模式

用代码来判断计算机的存储模式


引言

一个内存单元是一个字节,并且对应一个地址。当存储多个字节的数据时(int,short,double.....)

,就会出现一个问题,高地址处存高位字节还是低位字节。于是就出现了两种存储模式。

大端(字节序)存储模式

数据低位放在高地址处,数据高位放低地址处。

int a=0x 00 00 00 01(两位十六进制数表示一个字节)

 

小端(字节序)存储模式

数据低位放在低地址处,数据高位放在高地址处。

int a=0x 00 00 00 01(两位十六进制数表示一个字节)

用代码来判断计算机的存储模式

方法(1)

#include<stdio.h>
int main()
{
  int a = 1; 
  char *p = (char*)&a;//从低地址处,取出第一个字节
  if (*p == 1)
    printf("小端\n");
  else
    printf("大端\n");
}

方法(2)

使用联合体的方法

定义一个联合体

union U
{
    char a;
    int b;
};

a,b共用同一块儿内存,若定义一个联合体变量,给成员b赋值1。

如果是小端存储:

读取成员a的大小为1

如果是大端存储:

读取成员a的大小为0

于是就可以完成代码

int main()
{
    union U p;
    p.b = 1;
    if (p.a == 1)
        printf("小端\n");
    else
        printf("大端\n");
}
相关文章
|
7月前
|
存储
计算机存储,字节分为大端和小端
计算机存储,字节分为大端和小端
95 1
|
7月前
|
存储 网络协议 API
大端与小端概念、多字节之间与单字节多部分的大小端转换详解
大端与小端概念、多字节之间与单字节多部分的大小端转换详解
487 1
|
存储 小程序 编译器
数据的存储--大小端
数据的存储--大小端
461 0
|
存储 C语言
大端存储和小端存储
1.大小端字节序 2.大端存储 3.小端存储 4.为什么会有大小端存储模式之分? 5.如何判断当前机器是大端存储还是小端存储 方法1 方法2
3016 0
|
3月前
|
Java
Byte 高位/低位简介绍(大端格式/小端格式)
Byte 高位/低位简介绍(大端格式/小端格式)
226 1
|
7月前
|
存储 小程序 编译器
什么是“大小端字节序”存储模式?
这篇内容讨论了计算机内存中存储整型变量的方式,特别是针对不同字节序(大端和小端)的概念。文章首先解释了正负整数在内存中以补码形式存储的规则,然后提出了一个问题:当一个4字节的整数在内存中存储时,其字节是如何分布的?接着,文章引入了大端字节序和小端字节序的概念,其中大端模式将高位字节存储在低地址,小端模式则相反。文章通过示例说明了两种存储模式的区别,并提供了一道题目来判断当前机器使用的字节序。最后,给出了一个简单的程序来检测系统是大端还是小端。
110 0
什么是“大小端字节序”存储模式?
|
存储 C语言 C++
C语言 “整型在内存的存储,大小端存储模式的介绍“
C语言 “整型在内存的存储,大小端存储模式的介绍“
64 1
|
存储 小程序 编译器
C语言:大小端字节序存储
大端字节序存储模式:把一个数据低位字节处的数据存放在高地址处,数据高位字节处的数据存放在低地址处
109 0
|
存储 小程序 编译器
大小端字节序详解
在开始正文之前,我想先问一下大家,内存中是怎样存放一个数的?当然啊,我这里问的不是数据存储的形式(比如整数存原码,负数存补码),而是一个数据存放的顺序 我们先看下面这个例子,当我们看看当把十六进制函数0x11223344存进内存中会是怎么样的。
大小端字节序详解
|
存储 小程序 编译器
整型在内存中的存储(详细剖析大小端)——“C”
整型在内存中的存储(详细剖析大小端)——“C”