系统的存储模式---大小端模式

#include <stdio.h>

bool issmall();
int main()
{

	if (issmall())
	{
		printf("Little \n");
	}
	else
	{
		printf("Big\n");
	}
262 657的二进制是
0000 0000 0000 0100 0000 0010 0000 0001
如果是Intel PC(Little-endian),这个数字将存储为
字节地址:00           01            02          03
 0000 0001    0000 0010     0000 01000000 0000
如果是Motorola处理机的Mac机,在内存中摆放如下:
字节地址:00           01            02          03

 0000 0000    0000 0100     0000 00100000 0001



	//上面的判断测试出你的机子的类型
	//下面的代码是对大小端的理解及运用
	int a[5]={1,2,3,4,5};
	int *p1=(int *)(&a+1);
	int *p2=(int *)((int)a+1);
	printf("%x   %x\n",p1[-1],*p2);

	return 0;

}

bool issmall()
{
	union{
		int j;
		char c;
	}temp;
	temp.j=1;
	if (1==temp.c)
	{
		return true;
	}
	else
		return false;
}
时间: 2024-08-21 02:47:36

系统的存储模式---大小端模式的相关文章

htonl(),htons(),ntohl(),ntons()--大小端模式转换函数

原文:http://qiuye.iteye.com/blog/844764 不同机器内部对变量的字节存储顺序不同,有的采用大端模式(big-endian),有的采用小端模式(little-endian).大端模式是指高字节数据存放在低地址处,低字节数据放在高地址处.小端模式是指低字节数据存放在低地址处,高字节数据放在高地址处. 在网络上传输数据时,由于数据传输的两端可能对应不同的硬件平台,采用的存储字节顺序也可能不一致,因此 TCP/IP 协议规定了在网络上必须采用网络字节顺序(也就是大端模式)

大小端模式对C语言的共用体结构有何影响

1.一些问题 问题1 #include "stdio.h" union { int i; char ch[2]; }key; main() { key.i=65*256+66; printf("%c\t%c\n",key.ch[0],key.ch[1]); } 答案是B      A:为什么不是A      B呢? 在前面的文章中我们已经测试过,X86体系结构的CPU是小端模式的.比如一个数0x1234,放在内存里按照内存地址从低往高实际上是低地址字节里放的是0x3

深入浅出: 大小端模式

Writer      :李强强 一.什么是大小端? 大小端在计算机业界,Endian表示数据在存储器中的存放顺序.百度百科如下叙述之: 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放: 小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方

大小端模式

1 什么大小端 大小端在计算机业界,Endian表示数据在存储器中的存放顺序. 小端模式:数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中.这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致. 大端模式:数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中.这种存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放. 如整形十进制数字305419896 ,转化为十六进制表示

用C语言程序判断大小端模式_C 语言

1.大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中:小端模式相反  2.为什么有大小端之分???  因为在计算机系统中,存储是以字节为单位的,每个地址单元都对应着一个字节,一个字节=8bit.在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器).对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,如何安排多个字节的存储,这就有了大端存储模式和小端存储模式 3.各自的优势:

用指针检测大小端模式

#include <stdio.h> #include <stdlib.h> //用指针的方式检测机器的大小端模式 int small_port() { int a = 1 ; char b = *((char *)(&a)) ; return b ; } int main(void) { int i = small_port(); if(1 == i) printf("小端模式\n"); else printf("大端模式\n");

深入理解计算机系统-之-数值存储(一)-CPU大端和小端模式详解

大端与小端 在嵌入式开发中,大端(Big-endian)和小端(Little-endian)是一个很重要的概念. MSB与LSB 最高有效位(MSB)指二进制中最高值的比特.在16比特的数字音频中,其第1个比特便对16bit的字的数值有最大的影响.例如,在十进制的15,389这一数字中,相当于万数那1行(1)的数字便对数值的影响最大.比较与之相反的"最低有效位"(LSB). LSB(Least Significant Bit),意为最低有效位:MSB(Most Significant

大端模式&amp;amp;小端模式 主机序&amp;amp;网络序

1. 主机序 不同的CPU有不同的字节序类型这些字节序是指整数在内存中保存的顺序,这个叫做主机序.最常见的有两种: 1.         Little endian:将低序字节存储在起始地址. 即小端模式 2.         Big endian:将高序字节存储在起始地址.    即大端模式 LE little-endian 最符合人的思维的字节序.地址低位存储值的低位,地址高位存储值的高位.怎么讲是最符合人的思维的字节序,是因为从人的第一观感来说低位值小,就应该放在内存地址小的地方,也即内存

处理器的大端和小端模式

 大端格式: 在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中.   小端格式: 与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节.    请写一个C函数,若处理器是Big_endian的,则返回0:若是Little_endian的,则返回1 解答: int checkCPU( ) {     {            union w            {                     int  a;