zoukankan      html  css  js  c++  java
  • c语言:union,大小端

    union:

    不允许只用联合变量名作赋值或其它操作。

    也不允许对联合变量作初始化赋值,赋值只能在程序中进行。

    小端存储:

    以字节为单位,低存低,高存高。

    任何数据在内存中都是以二进制(1或着0)顺序存储的,每一个1或着0被称为1位,而在x86CPU上一个字节是8位。比如一个16位(2字节)的 short int型变量的值是1156,那么它的二进制表达就是:00000100 10000100。由于Intel CPU的架构是Little Endian(小端存储,请参数机算机原理相关知识),所以它是按字节倒序存储的,那么就因该是这样:10000100 00000100,这就是定点数1156在内存中的结构。

    linux代码中的用例:union判断大小端[1]

    #include <stdio.h>
    
    static union { char c[4]; unsigned long l; } endian_test = { { 'l', '?', '?', 'b' } };
    #define ENDIANNESS ((char)endian_test.l)
    
    void f1(void)
    {
        printf("ENDIAN: %c
    " , ENDIANNESS);
    }
    
    
    int main()
    {
        f1();
    }
    /*
    root@oucaijun:/work/dcc# gcc *.c; ./a.out
    ENDIAN: l
    */
    

      

    引用:

    1. http://21cnbao.blog.51cto.com/109393/120108

  • 相关阅读:
    多进程之数据安全问题
    windows 下安装 RabbitMQ
    springCloud Config分布式配置中心
    git配置ssh
    spring cloud Gateway 新一代网关
    spring cloud Hystrix 断路器
    spring cloud OpenFeign 服务接口调用
    Ribbon负载均衡服务调用
    consul服务注册与发现
    Eureka服务治理
  • 原文地址:https://www.cnblogs.com/mylinux/p/4666966.html
Copyright © 2011-2022 走看看