---------------------------------------------------------------------------------------------------------------- 「説明・考察」 浮動小数点表示のプログラムを作ろうと思いましたが、前日にやったため時間が足りず、途中までしかできませんでした。 なので、出来た所まで出そうと思います。 プログラムの構成としては、最初の数値の入力画面で、符号部と整数部と少数部をわけて入力する事で、浮動小数点らしい処理をしようと思いました。 符号部をまず1bitの2進数に変換。 整数部を8bitの2進数に変換。 小数部を8bitの2進数に変換。 そして、最後にそれらをくっつけて表示しました。 bit数や、指数部は後でプログラムを付け足していこうと思いましたが、結局時間が足りずにできませんでした。 ので、最終的な表示は符号部1bit、仮数部15bit表示でおわってしまいました。 この後、bit数や指数部など問題の指示にあうように調整しようと思いましたが、現在10/20の22:05であるためあきらめてこのまま提出しようと思います。 すいませんでした、来週はきっちりと事前からプログラム作成にとりかかっていきたいと思っています。 ---------------------------------------------------------------------------------------------------------------- 「実行結果のコピペ」 C:\Documents and Settings\i865gpen4\My Documents\プログラムソース>sougou 符号部を入力して下さい。 + 整数部を入力して下さい。 3 小数部を入力して下さい。 0.3 あなたの入力した数値は3.300000です [ENTER]で符号部を2進表示します。 fugou2=0 [ENTER]で整数部を2進表示します。 seisuu2[0]=1 seisuu2[1]=1 seisuu2[2]=0 seisuu2[3]=0 seisuu2[4]=0 seisuu2[5]=0 seisuu2[6]=0 seisuu2[7]=0 [ENTER]で小数部を2進表示します。 shousuu2[0]=0 shousuu2[1]=1 shousuu2[2]=0 shousuu2[3]=0 shousuu2[4]=1 shousuu2[5]=1 shousuu2[6]=0 shousuu2[7]=0 [ENTER]で入力した数値を浮動小数点表示します。 3.300000の浮動小数点表示は、011000000.1001100です。 -- Press any key to exit (Input "c" to continue) -- ---------------------------------------------------------------------------------------------------------------- 「プログラムソース」 #include int main(void) { int i=0,j,fugou2=0,seisuu,shou,seisuu2[8]={0,0,0,0,0,0,0,0},shousuu2[8]={0,0,0,0,0,0,0,0}; char fugou; double shousuu,suuti,shousuubu; printf("符号部を入力して下さい。\n"); scanf("%c",&fugou); printf("整数部を入力して下さい。\n"); scanf("%d",&seisuu); printf("小数部を入力して下さい。\n"); scanf("%lf",&shousuu); suuti=seisuu+shousuu; if(fugou=='-'){ fugou2=1; suuti=-1*suuti; } printf("あなたの入力した数値は%fです\n",suuti); getchar(); printf("[ENTER]で符号部を2進表示します。\n"); getchar(); printf("fugou2=%d\n\n",fugou2); printf("[ENTER]で整数部を2進表示します。\n"); /*整数を2進数へ*/ do{ shou=seisuu/2; seisuu2[i]=seisuu%2; seisuu=shou; i++; }while(shou>0 && i<8); for(j=0;j<8;j++){ getchar(); printf("seisuu2[%d]=%d\n\n",j,seisuu2[j]); } /*少数を2進数へ*/ printf("[ENTER]で小数部を2進表示します。\n"); i=0; do{ shousuubu=shousuu*2; if(shousuubu>=1){ shousuu2[i]=1; shousuubu=shousuubu-1; } shousuu=shousuubu; i++; }while(shousuubu>0 && i<8); for(j=0;j<8;j++){ getchar(); printf("shousuu2[%d]=%d\n\n",j,shousuu2[j]); } printf("[ENTER]で入力した数値を浮動小数点表示します。\n"); getchar(); printf("%fの浮動小数点表示は、%d",suuti,fugou2); for(j=0;j<8;j++){ printf("%d",seisuu2[j]); } printf("."); for(j=1;j<8;j++){ printf("%d",shousuu2[j]); } printf("です。\n"); return 0; } ---------------------------------------------------------------------------------------------------------------------