什么是大小端字节序存储?如何用代码判断当前的机器是大端字存储还是小端存储?

目录

什么是大端字节序存储与小端字节序存储

为什么会有大端和小端之分?

用代码判断当前机器是大端存储还是小端存储


什么是大端字节序存储与小端字节序存储

1.字节序:以字节为单位,讨论存储顺序

2.大端字节序存储:高位在低地址处

小端字节序存储:高位在低地址处

什么是高位?比如1234中1就是高位,4就是低位。

3.只有字节数超过一个字节的类型才讨论存储顺序,char类型的变量一共就一个字节,当然就不存在存储顺序的问题。

为什么会有大端和小端之分?

一个内存单元是一个字节也就是八个比特位,但是C语言中还有超过8个bit的int等等类型,这就涉及到了存储顺序的问题。因此有了大端字节序存储和小端字节序存储,大端字节序就是高位在低地址处,小端字节序存储就是高位在高地址处。

用代码判断当前机器是大端存储还是小端存储

什么是大小端字节序存储?如何用代码判断当前的机器是大端字存储还是小端存储?_第1张图片

只需要找一个足够简单的数字比如1,取出他的地址,然后拿到第一个字节内容看看是0还是1即可,但是a是一个int类型的变量,对他取地址是一个int*类型的指针,对他解引用是直接拿到4个字节内容,要想拿到1个字节内容,我们应该先把int*类型的指针强制类型转换成char*类型的指针。

对于大端字节序存储,第一个字节的内容就是0,对于小端字节序存储,第一个字节的内容就是1。

代码还可以使用函数方式实现

什么是大小端字节序存储?如何用代码判断当前的机器是大端字存储还是小端存储?_第2张图片

因为是规定小端就返回1,大端就返回0,又因为我们用来判断大小端的数字1本来就是小端拿到的第一个字节就是1,大端是0,因此我们直接返回第一个字节的内容即可。

你可能感兴趣的:(c语言,算法,数据结构,开发语言)