大端和小端存储

小端存储法——高地址存高字节,低地址存低字节(高存高,低存低)(intel/ARM)

0x表示十六进制

数值:0x12 34 56 78在小端存储器里如何存储

0x8003 0x12

0x8002 0x34

0x8001 0x56

0x8000  0x78

1 BYTE = 8bit

大端存储法——高地址存低字节,低地址存高字节(高存低,低存高)(IBM大型机/网络字节序)

数值:0x12 34 56 78在小端存储器里如何存储

0x8003 0x78

0x8002 0x56

0x8001 0x34

0x8000  0x12

可以判断是大端还是小端的程序。

//By jourluohua HEU

#include <iostream>

using namespace std;

int main(int argc, char *argv[])

{

unsigned char *p;

int x=0x12345678;

p=(unsigned char *)&x;

for(int i=0;i<4;i++)

{

cout<<hex<<(unsigned int )p<<"\t" <<(unsigned short)(*p)<<endl;

p++;

}

return 0;

}
时间: 2024-08-26 16:34:36

大端和小端存储的相关文章

【总结】大端、小端存储模式的那点事

----------------------------------------------------------------------------------------------------- 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放: 小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权

测试计算机是小端存储还是大端存储

    一.理解大端存储和小端存储的概念     1).大端存储:大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放.                 2).小端存储:小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致.        

判断CPU 是小端存储(Little endian)还是大端存储(Big endian)模式

第一个版本: //return true in big-endian machines bool check_big_endian1() { int a = 0; int *p = &a; *(char *)p = 1; return a != 1; } 采用union的第二个版本: //return true in big-endian machines bool check_big_endian2() { union{ int a; char b; }var;//sizeof(var)=4

小端存储(little Endian)大端存储(big Endian)

小端存储--低内存低字节 87654321 字节或半字节的最低位字节(Lowest Significant Bit,LSB)存放于内存最低位字节地址上.即最低地址存放的最低字节,为Power PC,Intel x86 系列等采用. int a=0x12345678; 78为低字节 12为高字节 void fFun() { int a=0x12345678; char *p=(char *)&a; printf("0x%02X\n",*(++p)); } 0x56 大端存储(bi

字节存储排序:大端和小端的判别及转换

当前的存储器,多以byte为访问的最小单元,当一个逻辑上的地址必须分割为物理上的若干单元时就存在了先放谁后放谁的问题,于是端(endian)的问题应运而生了,对于不同的存储方法,就有大端(big-endian)和小端(little- endian)两个描述. 字节排序按分为大端和小端,概念如下 大端(big endian):低地址存放高有效字节 小端(little endian):低字节存放地有效字节 现在主流的CPU,intel系列的是采用的little endian的格式存放数据,而moto

变量在内存中的存储方式-----“大端”和“小端”

"大端"和"小端"可以追溯到1726年的Jonathan Swift的<格列佛游记>,其中一篇讲到有两个国家因为吃鸡蛋究竟是先打破较大的一端还是先打破较小的一端而争执不休,甚至爆发了战争.1981年10月,Danny Cohen的文章<论圣战以及对和平的祈祷>(On holy wars and a plea for peace)将这一对词语引入了计算机界(<程序设计实践>第9章).这么看来,所谓大端和小端,也就是big-endia

【c语言】验证计算机是大端存储还是小端存储

// 验证计算机是大端存储还是小端存储 #include <stdio.h> int main() { int a = 1; char *p; p = (char *)(&a); if(*p == 0 ) printf("当前计算机是大端存储\n"); else printf("当前计算机是小端存储\n"); return 0; } //也可以用联合实现 #include <stdio.h> union UN { int a; cha

20160403_联合体的本质和使用 &amp; 与struct的不同 &amp; 大端存储和小端存储

/************* 联合体的本质和使用 及 与struct的不同 及 大端存储和小端存储 ************ “联合体”(union)与“结构体”(struct)有一些相似之处.但两者有本质上的不同. [相似] union,中文名“联合体.共用体”,在某种程度上类似结构体struct的一种数据结构,共用体(union)和结构体(struct)同样可以包含很多种数据类型和变量. [不同] 在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和.而在“联合”中,各

大端和小端(big endian little endian)

一.大端和小端的问题 对于整型.长整型等数据类型,Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节):而 Little endian 则相反,它认为第一个字节是最低位字节(按照从低地址到高地址的顺序存放据的低位字节到高位字节). 例如,假设从内存地址 0x0000 开始有以下数据:  0x0000         0x0001       0x0002       0x0003  0x12            0x34