详解大端模式和小端模式

1、字节序

字节顺序,又称端序尾序(英语:Endianness)。在计算机科学计算机科学")领域中,是跨越多字节的程序对象的存储规则。
在几乎所有的机器上,多字节对象都被存储为连续的字节序列。例如在C语言中,一个类型为int的变量x地址为0x100,那么其对应地址表达式&x的值为0x100。且x的四个字节将被存储在存储器的0x100, 0x101, 0x102, 0x103位置。

2、大小端

在计算机中一般讲字节序分为两类:Big-Endian(大端字节序) 和 Little-Endian
a) Little-Endian 高位字节在前,低位字节在后。
b) Big-Endian 低位字节在前,高位字节在后。
c) 网络字节序:TCP/IP各层协议将字节序定义为Big-Endian,因此TCP/IP协议中使用的字节序通常称之为网络字节序。
举个小例子:
整数127(十进制)在计算机(64位)中大/小端字节序

image.png

3、x86中的字节序

在x86的计算机中,一般采用的是小端字节序

#include<stdio.h>                                                                                                    
int main(){
    int b = 127;
    int *p = &b; 
    char c = 0 ; 
    for(int i = 0;i < 4;i++){
        c = *((char*)p+i);
        printf("c is %d \n",c);    
    }   
}
~   

输出

c is 127 
c is 0 
c is 0 
c is 0 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容