zoukankan      html  css  js  c++  java
  • 大端 小端

    想看看苹果系统的数据存储是大端存储还是小端存储:

    首先小端,就是把低位存放在低地址。如0x 12345678,这个32位的十六进制数,从高位到低位依次是 0x 12, 0x 34,0x 56,0x 78;采用小端方式:最低为 0x 78 在最前面,故而内存中从低地址到高地状依次是0x 78,0x 56, 0x 34, 0x 12;

    大端方式亦然。比较符合人的理解,高位在内存中的低地址,故而内存中从低地址到高地状依次是0x 12,0x 34, 0x 56, 0x 78;

    很简单,写一个union ,联合里的数据类型公用一块内存,不同时间只能有一种数据类型,我们定义一个包含int 类型和char 类型的联合,给它赋值一个int i = 1;然后查看char 类型的ch 的值,如果是小端方式存储,内存中从低地址到高地状依次(0x 01,0x 00,0x 00,0x 00),那么,char 类型的ch 截取低地址的0x 01。反之,大端内存中从低地址到高地状依次(0x 00,0x 00,0x 00,0x 01),会截取到 低地址的0x 00;

    地址偏移

            大端模式                   小端模式

    0x00    12OP0                 78OP3

    0x01    34OP1                 56OP2

    0x02    56OP2                 34OP1

    0x03    78OP3                 12OP0

     1 //判断系统大小端存储的方法
     2 int checkSystem() {
     3     union check{
     4         int i;
     5         char ch;
     6     } c;
     7     c.i = 1;
     8     return (c.ch == 1);// 0x 01 00 00 00
     9 }
    10 int main(int argc, const char * argv[]) {
    11     int check = checkSystem();
    12     if (check == 1) {
    13         printf("小端模式存储
    ");//
    14     }else {
    15         printf("大端模式存储
    ");
    16     }
    17     
    18     return 0;
    19 }

    结果发现苹果采用小端方式存储数据。

  • 相关阅读:
    二叉树解题思想
    SpringBoot + Mybatis 和ssm 使用数据库的区别
    Spring Cache 抽象(缓存抽象) Redis 缓存
    VirtualBox 虚拟机 从入门到入坑
    小知识点的记录
    SpringBoot 的不同
    请你激起学习的激情
    java 适配器模式
    UML类图的情话诉说
    Java 工厂模式
  • 原文地址:https://www.cnblogs.com/wjw-blog/p/5673132.html
Copyright © 2011-2022 走看看