-1
私は、プログラムがファイルからの入力を受け取り、10進数を2進数に変換し、2進数形式の1の数を数える単純なプログラムを持っていますか? 小さい値の場合は 、15755645551のような巨大な値の場合は明らかに機能しません 誰もがこの問題を解決する方法を知っていますか? 誰でも自分のコードを試すことができますか? ありがとうございます! は、ここに私のコードです:変換する方法巨大な10進値バイナリ
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define BUFFER 25
long number_read = 0;
long number_of_ones = 0;
long remainder_value = 0;
long binary = 0;
long base = 0;
long buff[BUFFER];
int main()
{
FILE *fp; //file pointer fp
fp = fopen("File.txt", "r+");
while (fgets(buff, sizeof(buff), fp) != NULL)
{
number_read = atoi(buff); //ASCII to integer
printf("\nnumber is=%d", number_read);
while (number_read > 0)
{
remainder_value = number_read % 2;
/* To count no.of 1s */
if (remainder_value == 1)
{
number_of_ones++;
}
binary = binary + remainder_value * base;
number_read = number_read/2;
base = base * 10;
}
printf("\nNo.of 1's in It's binary representation is = %d\n", number_of_ones);
number_of_ones = 0;
}
fclose(fp);
return 0;
}
'15755645551'は' long'に収まらないかもしれませんか? –
はい..実際に私は長い間試してきましたが、上記のことを忘れてしまいました。 – Garryp