机器大小端存储模式

简介: 机器大小端存储模式

一.大小端是什么以及为什么会出现大小端

1.为什么出现大小端?

一开始是由于不同架构的CPU处理多个字节数据的顺序不一样,比如x86的是小段模式,KEIL C51是大端模式。但是后来互联网流行,TCP/IP协议规定为大端模式,为了跨平台通信,还专门出了网络字节序和主机字节序之间的转换接口(ntohs、htons、ntohl、htonl)

2.大小端是什么?

大端存储模式:是指数据的低位保存在内存得高地址当中,而数据的高位保存在内存的低地址当中

小端存储模式:是指数据的高位保存在内存的高地址当中,而数据的低位保存在内存的低地址当中;


二.如何鉴别自己的机器的大小端?

        简单处理,创建一个整形变量,存值为1,16进制表示为0x00 00 00 01也为小端存储模式,而0x 01 00 00 00 为大端存储模式对这个整型变量地址进行强制类型转换成char*类型,使得转换后每次只能访问一个字节,在判断类型转换后解引用的值是否为一,如果小端存储,低地址放低字节那访问一个字节就是01,而如果是大端字节存储,低地址放高字节,访问一个字节,值就为0。

代码演示:

#include<stdio.h>
int main()
{
  int a = 1;
  char *p = (char *)&a;//将整形地址强制类型转换为char*型则每次访问地址只访问一个字节
//1的十六进制为0x 00 00 00 01 也为小端字节序存储
//0x 01 00 00 00为大端字节序存储
  if(*p == 1)
  {
    printf("机器为小端字节序存储\n"); 
  }
  else
  {
    printf("机器为大端字节序存储\n"); 
  }
  return 0;
}

可以看到我的机器为小端字节序存储。

当然,也有许多其他的判断大小端代码,这里就不一一提了,了解大小端存储模式会对后面指针学习有所帮助,也对内存有更进一步的认识。

 

 

 

 

相关文章
|
6月前
|
存储 缓存 固态存储
计算机的存储
计算机的存储
240 2
|
存储 小程序 编译器
数据的存储--大小端
数据的存储--大小端
453 0
|
3月前
|
存储 缓存 数据处理
计算机临时存储CPU运算数据
【8月更文挑战第4天】
64 8
|
4月前
|
存储 固态存储 芯片
计算机中内存与存储
【7月更文挑战第28天】
64 1
|
5月前
|
存储
数据在内存中的存储(了解数据在内存中的存储规则,看这一篇就够了!)
数据在内存中的存储(了解数据在内存中的存储规则,看这一篇就够了!)
|
6月前
|
存储 小程序 编译器
什么是“大小端字节序”存储模式?
这篇内容讨论了计算机内存中存储整型变量的方式,特别是针对不同字节序(大端和小端)的概念。文章首先解释了正负整数在内存中以补码形式存储的规则,然后提出了一个问题:当一个4字节的整数在内存中存储时,其字节是如何分布的?接着,文章引入了大端字节序和小端字节序的概念,其中大端模式将高位字节存储在低地址,小端模式则相反。文章通过示例说明了两种存储模式的区别,并提供了一道题目来判断当前机器使用的字节序。最后,给出了一个简单的程序来检测系统是大端还是小端。
93 0
什么是“大小端字节序”存储模式?
|
6月前
|
存储
计算机中数据的存储及二,八,十六进制的介绍
本文将向大家介绍各种进制其中包括:二级制,八进制,十六进制;数据在内存中将如何存储。
153 0
|
存储 Java 程序员
计算机中数据的存储(基础篇)
计算机中数据的存储(基础篇)
1176 0
|
存储 机器学习/深度学习 C++
C/C++数据在计算机内存中的存储形式详解
C/C++数据在计算机内存中的存储形式详解
深度解析各种数据在计算机内存中的存储
深度解析各种数据在计算机内存中的存储
深度解析各种数据在计算机内存中的存储