2進数を求めるプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
sim
記事: 48
登録日時: 10年前

2進数を求めるプログラム

#1

投稿記事 by sim » 10年前

0以上256未満の10進小数を入力する。配列は8桁を整数、8桁を小数。小数点以下9は切り捨て。範囲外ならエラー。
正しくありません。指摘よろしくお願いします。

コード:

#include <stdio.h>
#define NUM 16

int main(void)
{
	int nisin[NUM];
	double jusin,tmp;
	int i;
	
	printf("10進小数を入力してください。\n");
	scanf("%lf",&jusin);
	
	/*2の補数を求める処理*/
	if(0>jusin || 256<=jusin)
	{
		printf("エラー\n");
	}
	else
	{
		tmp=(int)jusin;
		i=0;
		while(i<NUM/2)
		{
			nisin[i]=(int)tmp%2;
			tmp=(int)tmp/2;
			i++;
		}
		i=NUM/2-1;
		while(i>=0)
		{
			printf("%d",nisin[i]);
			i--;
		}
		
		printf(".");
		
		tmp=jusin-(int)jusin;
		i=NUM/2;
		
		while(i<NUM)
		{
			nisin[i]=(int)(tmp*2);
			tmp=(tmp*2)-((int)(tmp*2));
			printf("%d",nisin[i]);
			i++;
		}
		
		printf("\n");
	}
	
	return 0;
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 2進数を求めるプログラム

#2

投稿記事 by みけCAT » 10年前

sim さんが書きました:正しくありません。指摘よろしくお願いします。
Pythonで書いた以下のプログラム

コード:

def a(n):
    aa=bin(int(n*256))
    aaa=aa[2:]
    while len(aaa)<16:
        aaa = '0' + aaa
    return aaa[0:8] + '.' + aaa[8:]
と出力を比較しましたが、以下の入力の中で出力が違うものはありませんでした。

コード:

3.14
56.3434243
255.999999999
0.003
0.004
0.1
2.718281828
具体的にどう正しくないのか教えていただけますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

sim
記事: 48
登録日時: 10年前

Re: 2進数を求めるプログラム

#3

投稿記事 by sim » 10年前

出来ていました。

閉鎖

“C言語何でも質問掲示板” へ戻る