最近做大数运算的项目,由于大数一般是成百甚至上千位,用个人pc机八位一存的方式存储的话太浪费空间了,所以想改八位一存为四位一存,一个字节存两个数字,万位进一,如今在百度上搜了很久,没见到任何有关的信息,心里很着急,项目是用vc6.0 MFC做的,希望大侠们帮帮忙,请不要copy其他地方的文字,给出你自己的思路(有基本代码更好),谢谢哦!!!

解决方案 »

  1.   

    以前弄过, 代码找到了http://note.sdo.com/u/20263700#/n/1djck~jphSxMLX01I0010z
      

  2.   


    #pragma pack(push, 1)
    typedef struct tagTestBit
    {
    int a:4;
    int b:4;
    int c:4;
    int d:4;
    int e:4;
    int f:4;
    int g:4;
    int h:4;
    }TestBit;#pragma pack(pop)int main (int argc, char* argv[])
    {
    TestBit obj = {1, 2, 3, 4, 5, 6, 7, 8}; //4位int最大到7 printf("sizeof(TestBit) = %d, sieof(int) = %d\nobj.g=%d,obj.h=%d\n", sizeof(obj), sizeof(int), obj.g, obj.h);

    return 0;
    }
      

  3.   

    为什么我得到的obj.h=-8呢?其他都是正数