zoukankan      html  css  js  c++  java
  • 字节序理解

    多个角色: 编程语言、编译器、磁盘、内存、CPU

    在字节序里他们都扮演什么样的角色?

    CPU决定字节序。x86架构的CPU都是小端字节序,意味着当CPU要从存储器(可能是寄存器、内存)中读取多字节数值时,CPU是按照小端来计算多字节对应的最终的数值,比如内存中存储的一个32位数值(例如int)的物理存储顺序为:0x78 0x56 0x34 0x12,从左往右地址由低到高,CPU指令在使用这个32位数的时候,按照小端字节序计算最终值就是 0x12345678。

    编程语言是没有字节序的概念的,编程语言已经抽象出来了数据类型,比如c语言的int、char、long,汇编中的dd、db、dw,虽然名字不一样,本质上都代表不同字节数的数值。

    编译器会将编程语言中的数据类型按照CPU指定字节序编译成指定的字节流,比如编译x86 CPU架构下的程序都是会按照小端字节序来编译成最终的二进制数,比如在c语言中定义一个 int a = 0x12345678,编译以后的二进制文件中存储的从低地址到高地址依次是: 0x78、0x56、0x34、0x12。

    硬盘存储编译器编译的二进制文件,在二进制文件中已经是按照指定字节序存储。

    操作系统在加载二进制文件时,不会处理字节序问题,操作系统只负责把二进制文件原模原样加载到内存里,所以内存中存储的二进制内容和在磁盘中的是一样的,最终CPU在取内存中对应数据时才会处理字节序。

  • 相关阅读:
    python 中 print函数的用法详解
    可转债操作一览
    Python基本数据类型
    python的列表
    理财的方法
    92、Multiple commands produce Info.plist 报错
    91、最新cocoaPods安装与使用
    90、引入头文件不提示
    89、instancetype和id的区别
    88、const、static、extern介绍
  • 原文地址:https://www.cnblogs.com/caiyao/p/13533997.html
Copyright © 2011-2022 走看看