大整数的存储

大整数的存储

定义int型数组d[1000],整数的高位存储在数组的高位,整数的低位存储在数组的低位。
而把整数按字符串读入的时候,实际上是逆序存储的 。因此在读入之后需要另存到d[]数组的时候需要反转一下。

定义大数 数据类型 bign:

struct bign{

    int d[1000];
    int len;

    bign()
    {
        fill(d,d+1000,0);
        len=0;
    }

};

输入大整数的时候,一般都是先用字符串读入,然后再把字符串另存为bign结构体。由于使用char数组进行读入时,整数的高位会变成数组的低位,而整数的低位会变成数组的高位,因此为了让整数再bign中是顺位存储,需要让字符串倒着赋给d[]数组。

//将整数转换为bign 

bign change(char str[])
{
    bign a;

    //bign的长度就是字符串的长度 
    a.len=strlen(str); 

    for(int i=0;i<len;i++)
    {
        //逆着赋值 
        a.d[i] = str[a.len- i-1]-'0';

    }

    return a; 

}


如何比较两个bign类型的变量的大小呢?先判断两者的len的大小,如果不相等,就是长的大;如果相等,则从高位到低位进行比较,直到出现某一位不等 ,就可以判断两个数的大小。


//比较a和b的大小,a大、相等、a小分别返回1、0、-1 

int compare(bign a,bign b)
{
    if(a.len > b.len)
    {
        return 1;//a大 
    }
    else if( a.len < b.len )
    {
        return -1;//a小 
    }
    else
    {
        //从高位往低位比较 
        for(int i= a.len-1;i>=0;i--  )
        {
            if( a.d[i]>b.d[i] )
            {
                return  1; //a大 
            }
            else if( a.d[i]<b.d[i]   )
            {
                return -1;//a小 
            }

        }

        return 0;   //两数相等 

    }




}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值