• ベストアンサー

ソースについて聞きたいのですが・・・

符号付32ビットの整数値を入力して、32ビットの2進数の表示と16進数の表示をしたいのですが、ソースのヒントを教えてくれればうれしいです。わかるところまで書きます。 int x; printf("符号付32ビットの整数値の入力:"); scanf("%d" ,&x); その後を教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • sobacya
  • ベストアンサー率11% (1/9)
回答No.2

例 int x; printf("符号付32ビットの整数値の入力:"); scanf("%d" ,&x); printf("HEX:%08x\nBIT:", x); for (int i = 31; i >= 0; i--) printf("%d", (x >> i) & 1); たぶんこんなんでできると思います。 (例は適当なので自分なりに直してください。) 配列の使いどころはわかりませんでした。

ilikepaso
質問者

お礼

ありがとうございます。良いヒントが得られてうれしいです。

ilikepaso
質問者

補足

ちなみに表示された2進数を4ビットずつスペース空けたいんですけど、教えていただけますか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • sobacya
  • ベストアンサー率11% (1/9)
回答No.3

適当に書いたのにそのまま動くとは・・・。 > ちなみに表示された2進数を4ビットずつスペース空けたいんですけど、教えていただけますか? 処理が理解できればすぐにできると思います。 そのくらいは自分でやってください。

全文を見る
すると、全ての回答が全文表示されます。
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

ヒント 16進数: std::hexを使用 2進数:  std::bitsetを使用 処理系(CかC++かも含めて)不明なので、こんな感じで。

ilikepaso
質問者

補足

配列を使ってできると聞いたのですが、その方法を教えていただけないでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 学校の課題でソースについて聞きたいんですが

    符号付き32ビットの整数値を入力して32ビットの2進数で表示させました。(以下の通り) int x; int i; printf("符号付32ビットの整数値を入力:"); scanf("%d",&x); for(i=31; i>=0; i--) { printf("%d" ,(x>>i)&1); } この時、4ビットずつに区切って表示させたいんですけど、どうすればいいでしょう?教えてください。

  • ヒントをください!

    ある課題があるんですが、 「ユーザに好きな整数を10個入力させ、その最小値と最大値を出力するプログラムを書いてください。if文を使ってください。」 このプログラムを作る際のヒントをください。ぜんぜんわからないので。。。 答えは作ってから見たいので。。。 よろしくおねがいします。 10個数字を入力させるプログラムは作りました。 #include <stdio.h> int main(void){ int c,e,r,u,t,v,d,a,p,n; printf("好きな整数を10個入力してください。\n"); printf("整数を入力:"); scanf("%d",&c); printf("整数を入力:"); scanf("%d",&e); printf("整数を入力:"); scanf("%d",&r); printf("整数を入力:"); scanf("%d",&u); printf("整数を入力:"); scanf("%d",&t); printf("整数を入力:"); scanf("%d",&v); printf("整数を入力:"); scanf("%d",&d); printf("整数を入力:"); scanf("%d",&a); printf("整数を入力:"); scanf("%d",&p); printf("整数を入力:"); scanf("%d",&n); return 0; } このようになりました。

  • 3つの整数が等しいかどうか調べるプログラム

    3つの整数が等しいかどうか調べるプログラムがよくわからないので、どなたか教えていただけないでしょうか?ちなみに、わからないながらに作ってみました。 #include <stdio.h> int main(void) { int x, y, z; puts("3つの整数を入力してください。"); printf("整数1:"); scanf("%d",&x); printf("整数2:"); scanf("%d",&y); printf("整数3:"); scanf("%d",&z); if (x==y==z) puts("3つの整数の値は同じです。"); else puts("3つの整数の値は違います。"); return (0); }

  • 2進数の乗算と除算

    先日、桁上がりについて質問させていただいた者です。 加算と減算はなんとか完成したのですが、乗算と除算になって混乱してしまいました。 二進数の乗算、除算はビットシフトと関係がありますが、私の作っているものの場合はどのようなソースコードにすればよいでしょうか? (ちなみに、bの値は2のべき乗に限定しています。) int main(void) { int a,b,i; int x[8],y[8]; puts("二つの符号なし整数を入力してください。(ただしa>bとし、bは2のべき乗の値とする)"); printf("a="); scanf("%d",&a); printf("b="); scanf("%d",&b);  printf("\n"); /*二進数の形に変換*/ for(i=0;i<=7;i++){ x[i]=a%2; a=a/2; y[i]=b%2; b=b/2; } puts("aとbをそれぞれ二進数で表すと"); printf("a="); for(i=7;i>=0;i--){ printf("%d",x[i]); } puts(""); printf("b="); for(i=7;i>=0;i--){ printf("%d",y[i]); } printf("となります。\n\n");     return(0);  }

  •    #include<stdio.h>

       #include<stdio.h> #include<math.h> int main(void) { int i,n,limit; printf("data? "); scanf("%d",&n); i(n>=2){ limit=int)sqrt(n); for(i=limit;i1;i--){ if(n%i==0) break; } if(i==1) printf("素数\n); else printf("素数でない\n"); } return 0; } というプログラムがあるのですが、それを改良して int型(符号付32ビット整数)および、unsigned int型(符号なし32ビット整数)のそれぞれの最大の素数を求めよという問題があり、ただし、エラトステネスのふるいは使わずに、上のプログラムを改良してみよという問題がどっかにあったんですが、全然わからないので、教えてください。

  • 分数の足し算をさせるプログラムが分かりません。どなたか分かりませんか?

    分数の足し算をさせるプログラムが分かりません。 C言語の問題で分数の足し算までは一応できるんですが、答えがでたときに整数で出すやり方と約分して表す方法が分かりません。 どなたか知恵を貸してくれませんか? ユーザから4つの整数を入力し、はじめに入力された2個の整数と後に入力された2個の整数を分数と考え、その分数の和を表示するプログラムを作成せよ。 例えば、「3」「4」「5」「6」と入力されたときは、3/4 + 5/6を計算する。 そのプログラム内では分数の和を計算する関数を作成する。 さらに、 約分を行う関数を 再帰呼び出しを利用して作成する。 void yakubun(int *a1, int *a2) 例えば、以下の場合1/2と表示される。 int i=10,j=20; yakubun(&i,&j); printf(“%d / %d”, i, j); ちなみにここまでできました↓ #include<stdio.h> void bunsu_tasizan(int a1,int a2,int b1,int b2, int *c1,int *c2 ) { *c1=(a1*b2)+(b1*a2); *c2=(a2*b2); } int main() { int x1,x2,y1,y2,z1,z2; printf("整数を入力してください"); scanf("%d",&x1); scanf("%d",&x2); scanf("%d",&y1); scanf("%d",&y2); if(x2==0||y2==0||x2==0&&y2==0) printf("0以外を入力してください"); else{ bunsu_tasizan(x1,x2,y1,y2,&z1,&z2); printf("%d/%d",z1,z2);} return (0); }

  • 既約分数の表示プログラム

    (1)キーボードから,分子,分母に相当する整数2つを入力し,その既約分数を表示せよ。 (2)分母が1の時には,分子のみを表示する。 (3)分子と分母の符号が異なるときにのみ,-符号を表示する。 (4)分母がゼロの入力エラーに対しては、再入力するように促す。 (5)分子と分母の最大公約数も求めて表示する。 (6)また、正しく計算できる最大規約分数を示せ。 #include <stdio.h> int main(void) { int a,b,i=1,x,y,z; printf("分子=");/*分子の入力*/ scanf("%d",&a); printf("分母=");/*分母の入力*/ scanf("%d",&b); if(b==0) { printf("分母が0です。入力が誤っています。\n"); return 0; } if(b==1) { printf("既約分数は %d\n",a); return 0; } while((i<=a)&&(i<=b)) { if((a%i==0)&&(b%i==0)) { x=i;i=i+1; /*xを上書きしていく*/ } else { i=i+1; } } printf("分子と分母の最大公約数=%d より\n",x); y=a/x; z=b/x; printf("既約分数は %d/%d\n",y,z); return 0; } 大学の課題で出されたものです。(1)(2)(4)(5)はできたのですが、(3)と(6)の部分のやり方がいまいちよくわからなかったので質問しました。 どなたかご教授お願いできないでしょうか・・・。

  • printf、最大値の出し方

    3つの整数を入力し、どれが最大値かを判別するプログラムを作りたいです。 #include<stdio.h> main() { int i, x, max; max = 0; i = 1; while(i <= 3) { printf("整数:"); scanf("%d",&x); if (x > max) { max = x; } i++; } printf("最も大きい整数は%d\n", max); } とすると 整数:と3回表示されますが、これを一つ目の整数:、二つ目の整数:3つ目の整数:と表示されるようなプログラムにするにはどうしたらよいでしょうか。

  • 4の倍数を論理演算で表す。。

    /*Prog32.cキーボードから整数型変数aへデータを入力し、aの値が4の倍数のときは“4の倍数です”と表示し、そうでないときは、“4の倍数ではありません”と表示する。ただし、整数データのビット数はわからないものとし、計算にはビットごとの論理演算のみを用いる。*/ #include <stdio.h> int main(void) { int a; printf("整数を入力して下さい! "); scanf("%d", &a); (a % 4 ) ? printf("4の倍数ではありません。\n", a) :printf("4の倍数です。\n", a); return(0); } 4の倍数を論理演算で表す方法がわかりません。。 自分では上記のように算術を使うやりかたしかわかりませんでした。 よろしくお願いします!

  • C言語の問題です

    整数xを入力し、xが正か負かゼロかを判定し、表示するプログラムを作成する問題です。 【ヒント】x > 0 が成立するときは正。 x < 0 が成立するときは負。正でも負でもないときはゼロ。 整数x => 2    整数x => -2    整数x => 0 2 は正です -2は負です 0はゼロです 上記の解答は下記の通りなのですが、下記以外の解答方法を教えてはいただけないでしょうか? プログラミングに詳しい方よろしくお願いいたします。 #include <stdio.h> main() { int x; printf("整数x=> "); scanf("%d",&x); if (x > 0) { printf ("%d は正です\n",x); } else if (x < 0) { printf ("%d は負です\n",x); } else { printf ("%d はゼロです\n",x); } return (0); }