作业1:请简述字节序以及大小端的概念
答:字节序:不同类型的CPU主机,内存存储 多字节整数 序列的方式。
小端字节序:低序字节存储在低地址上。
大端字节序:低序字节存储在高地址上。
注意:
1.int、short、long、long long都存在字节序。
2.浮点类型、字符类型、字符串没有字节序的说法。
3.计算机的读取顺序,都是从低地址往高地址读取,即从首地址开始读取,读取完毕后通过大小端转换得到结果。
作业2:请用共用体的方式判断操作系统是大端存储还是小端存储。
/*利用联合体判断操作系统是大端字节序还是小端字节序*/
/*
分析:在联合体中,共用一块内存空间,利用此特性,可以在这个共用体中定义两个成员
分别是:无符号整型和字符类型
小端字节序:低序字节存储在低地址上
大端字节序:低序字节存储在高低之上
由于char类型变量占1字节,所以借此判断
如果该char型变量的值 == 无符号整型的最低字节序
即为小端字节序,否则为大端字节序。
*/
#include <stdio.h>
union {
unsigned int digital;
char buffer;
} endian;
int main(int argc, char const* argv[])
{
endian.digital = 0x87654321;
printf("digital: %#x\n", endian.digital);
printf("buffer : %#x\n", endian.buffer);
if (endian.buffer == 0x21) {
printf("本操作系统是小端存储!\n");
} else {
printf("本操作系统是大端存储!\n");
}
return 0;
}