lvxuzhou


私信TA

用户名:lvxuzhou

访问量:106753

签 名:

lvxuzhou

等  级
排  名 47
经  验 12168
参赛次数 0
文章发表 56
年  龄 0
在职情况 学生
学  校 西安
专  业

  自我简介:

一、大小端

1、为啥会有大小端

在计算机系统中以字节为单位,每个地址单位都有一个字节(一个字节8个bit位)。在C语言中,有char(8bit)、short(16bit)、long(32bit,具体看编译器)。对于位数大于8的处理器,不如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在一个如何将多个字节安排的问题。so就有了大端存储模式和小端存储模式


2、大小端的概念区分


(1)大端(Big_endian):数据的高字节保存在内存的低地址处,数据的低字节保存在内存的高地址。这个存储模式类似将数据当做字符串处理:地址由小到大增加,数据由高到低存放。

(2)小端(Little_endian):数据的高字节保存在内存的高地址处,数据的低字节保存在内存的低地址。这样子的存储模式和我们逻辑思维方式一样,将地址的高低位和数据权位有效对应起来,高地址对应权值高的,低地址对应权值低的。

提示:对于x86架构,一般网络字节序都是大端,本地字节序都是小端。

微信图片_20210922232215.png

测试代码:

#include <stdio.h>
#include <stdint.h>

int main(int argc, char const *argv[])
{
    uint16_t a = 0x1234;

    (*(char *)&a) == 0x34 ? puts("小端系统") : puts("大端系统");

    return 0;
}

运行结果:

微信图片_20211016125423.png

检查系统大小端:
QQ图片20211016125946.png

可以看到系统就是小端

 

0.0分

1 人评分

新上线《蓝桥杯辅导》课程,近五年的蓝桥杯省赛与国赛真题都有,从读题开始理解题意、梳理思路、实现代码再提交评测全过程,可有效提升获奖比例甚至进国赛!课程介绍、试听请猛击这里

  评论区

这个很有价值,估计很多人还不知道~
2022-07-17 19:21:25
  • «
  • 1
  • »