zoukankan      html  css  js  c++  java
  • 存储细节

    在计算机系统中,数值一律用补码来表示(存储)。主要原因是使用补码,可
    以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数
    相加时,如果最高位(符号位)有进位,则进位被舍弃。正数的补码与其原码一致;负数的
    补码:符号位为1,其余位为该数绝对值的原码按位取反,然后整个数加1。

    char类型默认情况下是有符号的,其表示的值的范围为[-128,127],超出这个范围的值会产生溢出.

    char a[1000];
    int i;
    for(i=0; i<1000; i++)
    {
    a[i] = -1-i;
    }
    printf("%d",strlen(a));    255

    柔性数组到底如何使用呢?看下面例子:
    typedef struct st_type
    {
    int i;
    int a[0];
    }type_a;
    有些编译器会报错无法编译可以改成:
    typedef struct st_type
    {
    int i;
    int a[];
    }type_a;        

    sizeof(type_a) 得到的只有4 , 就是sizeof(i)=sizeof(int)。那个0 个元素的数组没有占用空间,而后我们可以进行变长操作了.

    柔性数组其实与结构体没什么关系,只是“挂羊头卖狗肉”而已,算不得结构体的正式成员.

    大端模式(Big_endian):字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。()
    小端模式(Little_endian):字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中。(大众化的存储模式)

    union 型数据所占的空间等于其最大的成员所占的空间。对union 型的成员的存取都是
    相对于该联合体基地址的偏移量为0 处开始,也就是联合体的访问不论对哪个变量的存取都
    是从union 的首地址位置开始.

  • 相关阅读:
    推荐算法学习资料
    imsdroid 学习(初认识)
    从网易新闻看离线阅读的实现思路
    关于PullToRefreshView bug 的修复
    Android Log日志的封装类,显示类名以及行号,快速定位
    Android Sqlite数据库版本升级管理初探
    《围观啦》发布了!!!!!!!
    单本书阅读,android客户端
    Android P2P语音通话实现(思路探讨)
    HTTP协议基础
  • 原文地址:https://www.cnblogs.com/lvpblog/p/2529017.html
Copyright © 2011-2022 走看看