zoukankan      html  css  js  c++  java
  • 用Union体测试处理器大小端

    如何将多个字节安排到内存中去?大端对齐和小端对齐两种方式

    大端模式Big_endian):字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。(查看内存通常是:左高右低)int i=1; BE: 00 00 00 01

    小端模式Little_endian):字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中 。int i=1; LE: 01 00 00 00

    利用union类型数据的特点:所有成员的起始地址一致。对 union 型的成员的存取都是相对于该联合体基地址的偏移量为 处开始, 也就是联合体的访问不论对哪个变量的存取都是从 union 的首地址位置开始。

    例一: 

    ①将int型成员赋值为1;

    ②获取char型成员值

    ③如果取低地址值为1则是小端模式,如果取低地址值为0则是大端模式。

     1 int checkSystem( )
     2 {
     3    union check
     4    {
     5      int i;
     6      char ch;
     7    } c;
     8 c.i = 1;
     9 return (c.ch ==1);
    10 }

    例二:

    ①定义一个共用体变量:union A a1;

    ②对共用体a1.s赋值为0x1234

    ③由于共用体成员共用内存,则读取成员变量as.c[0]值,如果是0x34则是小端模式,如果是0x12则是大端模式

    1 union A
    2 {
    3     short s;
    4     char c[2];
    5 };

    参考链接:

    https://www.bilibili.com/video/BV12J41157Z1?from=search&seid=7908928799004699814

    参考资料:

    《C语言深度剖析》

  • 相关阅读:
    nodejs dateformat date-utils
    nodejs async
    nodejs dateformat date-utils
    nodejs timer block-timer timer-ease
    linux 修改 ssh 的端口号,启动hg服务
    linux 下添加 路由
    tkprof 命令行工具用法
    通过API删除库存货位
    使用FROM个性化修改标准FORM的LOV
    批量更新 ITEM 物料属性
  • 原文地址:https://www.cnblogs.com/darren-pty/p/14194788.html
Copyright © 2011-2022 走看看