大数的十进制转换成二进制

要求输出最多有30位的十进制数的二进制表示。
10的30次方大概是2的100次方,最大的long long int最多也只能表示到2的64次方,所以用字符串来存这个数,然后通过遍历字符串的方式来模仿整数除法。

#include <cstdio>
#include <iostream>
#include <string.h>


using namespace std;
char sp[100];
int res[100];
int n,length;

bool isAllZero(char* str)
{
    for(int i=0;i<length;i++)
    {
        if((int)str[i]!=0)
        {
            return false;
        }
    }
    return true;
}

int main()
{
    scanf("%s",sp);
    length = strlen(sp);
   //下面把ascii码值转换成整数值 十进制0对应ascii码的48
    for(int i=0;i<length;i++)
    {
        sp[i] -= 48;
    }
    if(isAllZero(sp)) cout<<"0"<<endl;
    int counter = 0;
  //循环直到数组里所有数都为0
    while(!isAllZero(sp))
    {
        int pre = 0;
        for(int i=0;i<length;i++)
        {
           //除2取余
            int temp = (sp[i]+pre*10)/2;
            pre = (sp[i]+pre*10)%2;
            sp[i] = temp;
        }
        res[counter]=pre;
        counter++;
    }
    cout<<"counter is "<<counter<<endl;
    for(int i=counter-1;i>=0;i--)
    {
        cout<<res[i]<<" ";
    }
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,196评论 0 13
  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,262评论 1 44
  • 开始践行始于2013年,那年我决心要减肥减到100斤,就开始跟着王潇微博上那个“和潇洒姐塑身一百天”活动,每天按照...
    穆建园阅读 171评论 0 0
  • 仅凭一醉,句好并非诗性慧。酒亦消愁,激起吟情兴未休。 风骚无限,任我咿哦从不懒。多少才完?目的须超上万篇。 减字木...
    雪窗_武立之阅读 224评论 0 6
  • 引子 小艾告诉我:不是每个青春都有不为人知的心结。 ——著者 1 临近桂花飘香的时节,小艾终于再次有了黄石艺的消息...
    朕从西北来阅读 1,074评论 8 17