目录
什么是大端字节序存储与小端字节序存储
为什么会有大端和小端之分?
用代码判断当前机器是大端存储还是小端存储
什么是大端字节序存储与小端字节序存储
1.字节序:以字节为单位,讨论存储顺序
2.大端字节序存储:高位在低地址处
小端字节序存储:高位在低地址处
什么是高位?比如1234中1就是高位,4就是低位。
3.只有字节数超过一个字节的类型才讨论存储顺序,char类型的变量一共就一个字节,当然就不存在存储顺序的问题。
为什么会有大端和小端之分?
一个内存单元是一个字节也就是八个比特位,但是C语言中还有超过8个bit的int等等类型,这就涉及到了存储顺序的问题。因此有了大端字节序存储和小端字节序存储,大端字节序就是高位在低地址处,小端字节序存储就是高位在高地址处。
用代码判断当前机器是大端存储还是小端存储
只需要找一个足够简单的数字比如1,取出他的地址,然后拿到第一个字节内容看看是0还是1即可,但是a是一个int类型的变量,对他取地址是一个int*类型的指针,对他解引用是直接拿到4个字节内容,要想拿到1个字节内容,我们应该先把int*类型的指针强制类型转换成char*类型的指针。
对于大端字节序存储,第一个字节的内容就是0,对于小端字节序存储,第一个字节的内容就是1。
代码还可以使用函数方式实现
因为是规定小端就返回1,大端就返回0,又因为我们用来判断大小端的数字1本来就是小端拿到的第一个字节就是1,大端是0,因此我们直接返回第一个字节的内容即可。