Duanxx的嵌入式学习: 大端模式和小端模式

测试代码:

<span style="font-size:18px;"># 1
/* program to find machine is little endian  or little endian */
#include<stdio.h>

int main()
{
 int x=0x12345678;
 char *p;
 p=(char *)&x;
 if(*p == 0x78) {
    printf("Little endian \n");
 } else {
   printf("Big endian \n");
 }
return 0;
}

#2
/* another correct way is using unions */
int main()
{ 

union e {
       int x;
       char y;
};

union e p1;
p1.x=0x12345678;

if(p1.y == 0x78) {
    printf("Little endian \n");
 } else {
   printf("Big endian \n");
}
return 0;
}

#3
below is same as #1 with more simplified

[email protected]:~/ds/misc$
/* following is not correct way to find the machine */
 #include<stdio.h>

int main()
{
int num=1;

if(*(char *)&num == 1)
 {
    printf("Little\n");
 } else {
   printf("Big endian\n");
}

}</span>
时间: 2024-11-15 00:54:17

Duanxx的嵌入式学习: 大端模式和小端模式的相关文章

详解大端模式和小端模式

详解大端模式和小端模式 原文地址:http://blog.csdn.net/ce123_zhouwei/article/details/6971544 一.大端模式和小端模式的起源 关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的<格利佛游记>:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战.战争的原因:大家都知道,吃鸡蛋的时候,原始 的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,

大端模式和小端模式的区别

大端模式和小端模式的区别 在C语言中除了8位的char型之外,还有16位的short型,32位的long型(要看具体的编译器),对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着如何将多个字节安排的问题.因此就导致了大端存储模式和小端存储模式. 大端模式: 字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中. 小端模式: 与大端存储模式相反,在小端存储模式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节. 例如,16位宽

大端模式与小端模式

对于跨越多字节的程序对象,我们必须建立两个规则:这个对象的地址是什么,以及在存储器中如何安排这些字节.在几乎所有的机器上,多字节对象都被存储为连续的字节序列,对象的地址为所使用字节的最小地址.例如,假设一个型为int变量x的地址为0x100,也就是说,地址表达式&x的值为0x100.那么,x的4个字节被存储在存储器的0x100,0x101,0x102和0x103位置. 排列表示一个对象的字节有两个通用的规则.考虑一个w位的整数,位表示为[Xw-1,xw-2,...,x1,x0],其中xw-1是最

计算机的大端模式和小端模式

大端模式和小端模式指的是我们计算机的存储数据的方通常又称为大尾和小尾. 大端:数据的高字节保存在内存的高地址 小端:数据的低字节保存在内存的低地址 下面是两种方式的示意图 堆栈指针寄存器SP的走向从SP到SP+3(SP始终指向栈顶) 知识链接: 断点和现场保护:这是堆栈的主要功能 保护断点指主程序调用子程序或执行中断服务程序的时候,为了能在子程序或者中断服务程序执行完之后顺利的返回主程序,必须将断点处的有关信息压入堆栈,执行完子程序后再按照先进先出的原则将其pop出来回复有关寄存器的内容,使得主

大端模式与小端模式、网络字节顺序与主机字节顺序

大端模式与小端模式 一.概念及详解 在各种体系的计算机中通常采用的字节存储机制主要有两种: big-endian和little-endian,即大端模式和小端模式. 先回顾两个关键词,MSB和LSB: MSB:Most Significant Bit  ------- 最高有效位     LSB:Least Significant Bit ------- 最低有效位 大端模式(big-edian) big-endian:MSB存放在最低端的地址上. 举例,双字节数0x1234以big-endia

数据在内存中存储的方式:大端模式与小端模式

什么是大端模式,什么是小端模式? 所谓的大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放: 所谓小端模式(Little-endian), 是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内在的低地址中,这种存储模式将地址的高低和数据位 权有效结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致; 为什么有大小端之分: 因

操作系统大端模式和小端模式

在C语言中除了8位的char型之外,还有16位的short型,32位的long型(要看具体的编译器),对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着如何将多个字节安排的问题.因此就导致了大端存储模式和小端存储模式. 大端模式: 字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中. 小端模式: 与大端存储模式相反,在小端存储模式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节. 例如,16位宽的数0x1234在小端模式

大端模式和小端模式

详细大家都听说过大端模式和小端模式,但是究竟何为大端何为小端还是不容易记清楚,当然大端小端起源于一个典故(国外的) 这里我就不说了,感兴趣自己百度吧!回到我们的主题来,是这么回事,其实对于大端小端是翻译过来的,也翻译的不是很好如果我们把大端叫做大尾端小端叫小尾端. 那么这个尾巴又是什么那?尾巴指的是数据的末尾 比如1234 那么4就是 末尾.大尾端就是末尾是大的地址.反正亦然!

详解大端模式和小端模式(转载)

详解大端模式和小端模式 转载自:http://blog.csdn.net/ce123_zhouwei/article/details/6971544 一.大端模式和小端模式的起源 关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的<格利佛游记>:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战.战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,就下

关于大端模式和小端模式

大端模式是符合人的正常思维的,低地址存放高位,这样和我们从左往右看的方式是一样的(因为我们取地址总是取的是低地址):但是小端模式更符合计算机系统 网络协议中则是采用大端模式    http://www.cnblogs.com/fuchongjundream/p/3914770.html 在网络模式 在hackbucker的博客中讲的很详细,参考:http://blog.csdn.net/hackbuteer1/article/details/7722667  一.总结博客中内容 从这篇文章中,我