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在取内存中对应数据时才会处理字节序。

  • 相关阅读:
    Linux下MySql多实例免安装部署
    linux apf防火墙安装配置
    Fedora Yum命令查询软件包及清除缓存
    什么时候使用e.target.content和e.target as MovieClip
    帧频计数器
    设置播放器的品质
    访问文件名连续的mc、txt、btn
    Sound 音乐工具类【转载】
    确定字符串中、出现特定字符串的次数
    数组var _list:Array = new Array({logType:"1"});
  • 原文地址:https://www.cnblogs.com/caiyao/p/13533997.html
Copyright © 2011-2022 走看看