typedef union {
int n;
char p[sizeof(int)];
} union_t;
union_t ut;
memset(&ut,0, sizeof(ut));
ut.p[0] = 13;
printf("%d\n", ut.n);
输出结果是什么?
一般来说,大部分用户的操作系统(如windows, FreeBsd,Linux)是Little Endian
的。少部分,如MAC OS ,是Big Endian 的。
所谓MSB (Most Significant Byte)就是,一个数字中,最重要的那位,
比如,12004,中文读作,一万两千零四,那最高位的1,就表示了一万,此处就称作MSB,最有意义的位.
而LSB (Least Significant Byte)与MSB相反,个位数4就可以称为LSB,
在草稿纸上演算的时候,我们习惯左边写数的MSB,右边写数的LSB。
使用Little Endian方式存储数据时,数据的MSB存放在高地址,LSB存放在低地址
比如 0x11223344 ,它在内存中存储为
44 33 22 11
低地址-->高地址
使用Big Endian方式存储数据时,数据的MSB存放在低地址,LSB存放在高地址
比如 0x11223344 ,它在内存中存储为
11 22 33 44
低地址-->高地址
值得注意的是,大端法和小端法讨论的都是字节与字节之间的顺序,至于一个字节内的8个比特,无论大端法还是
小端法,顺序都是一样的,即右边存储低位,左边存储高位。再看一个例子:
已知内存中从低地址到高地址存储的4个字节依次是:
11 22 33 44
求这个数是多少?
关键是找出哪头是MSB,哪头是LSB
如果该机器是Little Endian,
则低地址存放的是LSB,所以11是LSB,高地址是MSB,所以44是MSB
所以这个数等于
0x44332211
如果该机器是Big endian,
则低地址存放的是MSB,所以11是MSB,高地址是LSB,所以44是LSB
0x11223344
这个笔试题的意思是,已知内存中从低地址到高地址存储的4个字节是
0D 00 00 00
使用小端法表示,这个数等于0x0000000D,即13。
再引申一个问题,试写一个函数判断机器是否为Big Endian。
思想是取一个short数0x1122的第1个字节,若这个字节等于0x11,则是大端法
int is_big_endian()
{
unsigned short test = 0x1122;
if(*( (unsigned char*) &test ) == 0x11)
return 1;
else
return 0;
}
分享到:
相关推荐
关于字节序(大端法、小端法)的定义《UNXI网络编程》定义:术语“小端”和“大端”表示多字节值的哪一端(小端或...它在大端法和小端法的系统内中,分别如图1所示的方式存放。 网络字节序 我们知道网络上的数据流是
### 大端与小端表示法详解 #### 一、引言 在计算机科学领域,数据的存储方式是一项基础而重要的技术。对于大于255(即超过一个字节)的整数,需要多个字节来进行存储。这些字节如何在内存中排列,涉及到两种主要的...
大端与小端表示法是计算机科学中非常基础但又极其重要的概念,了解并掌握它们有助于开发者编写更加健壮和兼容性更好的程序。无论是进行跨平台编程还是网络通信开发,都需要对数据的字节序有清晰的认识。
用51系列单片机可实现的CRC32校验c语言算法,经测试通过,准确无误,代码占用量少,完全满足单片机的使用!
在小端系统中,低字节存储在内存地址较低的位置,而在大端系统中,高字节位于低地址。为了确保程序在大小端系统上都能正确工作,你需要在写入数据到CRC单元前,根据系统字节序进行适当的调整。例如,对于32位整型,...
字节顺序分为大端法和小端法。大端法中,最高有效字节存储在低地址,而小端法则相反,最低有效字节存储在低地址。Intel兼容机通常使用小端法,而IBM和Sun公司的某些机器采用大端法。现代处理器如ARM支持双端法,但...
总的来说,大端和小端模式是计算机系统中处理多字节数据的一种基础方式,对于编程和系统设计有着深远的影响。了解和掌握这两种模式对于进行跨平台编程、网络通信和理解底层系统工作原理至关重要。
1. **数值表示**:在单片机中,大数值可能需要使用多个字节来存储,这涉及到二进制补码表示、字节顺序(如大端序或小端序)以及如何组合这些字节以形成完整的数值。 2. **除法算法**:常见的长除法算法包括迭代法和...
Endianness 主要分为两种:大端法(Big Endian)和小端法(Little Endian)。这个名为 "Macro-test-mode-test-system.zip_endian_little_endian" 的压缩包文件是为了帮助用户检测他们的个人计算机(PC)使用的是哪种...
根据字节序的不同,可以分为两种主要的形式:大端模式(Big Endian)和小端模式(Small Endian)。 **大端模式**: - 在大端模式下,数据的高字节存储在内存的低地址中,而数据的低字节则存储在内存的高地址端。 - ...
实验步骤包括在VC 6.0++环境中编写和编译程序,然后在大端和小端机器上执行,观察和分析结果。实验结果部分应包含实验一和实验二的具体输出,以及实验三的手动推导过程。 源代码中包含了几个关键函数,如`show_...
《深入理解计算机系统》中提到了两种常见的字节序表示方法:大端法(Big Endian)和小端法(Little Endian)。 - **小端法**:小端法是一种数据存储方式,其中低字节数据存储在低地址处,高字节数据存储在高地址处...
对于不同的字节流顺序,CRC的计算方法也会有所不同,例如小端序和大端序。小端序是指数据的低位字节在前,高位字节在后,而大端序则相反。 计算CRC的方法主要有几种: 1. 直接计算:通过执行多项式除法的每一步,...
它分为大端法(Big-Endian)和小端法(Little-Endian)。大端法将数据的高位字节存储在低地址,而小端法则相反,低位字节存储在低地址。例如,一个十六进制值0x01234567在大端法中从0x100开始的地址分布为0x01 0x23 ...
其中,a/2表示圆锥半角,C为锥度,D为圆锥大端直径,d为圆锥小端直径,L为圆锥大端直径与小端直径处的轴向距离。正确计算这个角度对于获得准确的锥度至关重要。 车刀的装夹是保证加工精度的基础。工件的回转中心...
1. **理解计算机数据表示和存储的方式**:学习二进制编码系统、字节顺序(小端法/大端法)、整数和浮点数的不同表示方法等。 2. **通过高级语言编程了解基本程序的机器级表示**:利用C语言或其他高级语言实现特定...
需要注意的是,不同的计算机架构可能有不同的字节顺序(比如大端序和小端序),这会影响浮点数如何在内存中存储和解析。因此,在进行跨平台数据交换时,需要考虑字节序问题,确保正确解读4字节数值。 总的来说,...
8. **数据存储顺序**:大端法和小端法决定了数据在内存中的存储顺序,大端法将高有效位放在低地址,小端法则反之。 9. **数码校验**:奇偶校验、海明校验和CRC码用于检测数据传输或存储中的错误。奇偶校验简单但...