用指针检测大小端模式

#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");
	return 0 ;
} 
时间: 2024-11-08 17:08:52

用指针检测大小端模式的相关文章

大小端模式对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表示数据在存储器中的存放顺序.百度百科如下叙述之: 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放: 小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方

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

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

大小端模式

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

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

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

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

#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      

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

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

处理器的大端和小端模式

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

关于大小端、位域的一些概念详解_C 语言

大小端: 对于像C++中的char这样的数据类型,它本身就是占用一个字节的大小,不会产生什么问题.但是当数制类型为int,在32bit的系统中,它需要占用4个字节(32bit),这个时候就会产生这4个字节在寄存器中的存放顺序的问题.比如int maxHeight = 0x12345678,&maxHeight = 0x0042ffc4.具体的该怎么存放呢?这个时候就需要理解计算机的大小端的原理了. 大端:(Big-Endian)就是把数值的高位字节放在内存的低位地址上,把数值的地位字节放在内存的