大數的十進制轉換成二進制

要求輸出最多有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,195評論 0 13
  • 一、Java 簡介 Java是由Sun Microsystems公司于1995年5月推出的Java面向對象程序設計...
    子非魚_t_閱讀 4,252評論 1 44
  • 開始踐行始于2013年,那年我決心要減肥減到100斤,就開始跟著王瀟微博上那個“和瀟灑姐塑身一百天”活動,每天按照...
    穆建園閱讀 171評論 0 0
  • 僅憑一醉,句好并非詩性慧。酒亦消愁,激起吟情興未休。 風騷無限,任我咿哦從不懶。多少才完?目的須超上萬篇。 減字木...
    雪窗_武立之閱讀 223評論 0 6
  • 引子 小艾告訴我:不是每個青春都有不為人知的心結。 ——著者 1 臨近桂花飄香的時節,小艾終于再次有了黃石藝的消息...
    朕從西北來閱讀 1,069評論 8 17