2進数表示

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
111

2進数表示

#1

投稿記事 by 111 » 10年前

入力された変数を左に順1bitシフトして、その内容を表示
但し、printf文で2進数表示はできないので、変数を'0'と'1'の文字列に表示させるプログラム
を作っています。下記のプログラムコードで作っていますが、思ったような出力になりません
例えば5を入力した場合、 00000000 00000000 00000000 00000101のような出力にしたいのですが、
どのようにすればいいでしょうか?


#include<stdio.h>

void sub(int a, char *pbuf);

void main(void)

{


char a[32];
int c = 0;
int d = 0;

scanf_s("%d", &c);

sub(c, a);

printf("%s\n", a);

for (d = 0; d <= 32; d++);

{

c = (c << 1);

printf("%s\n", c);

}
}

void sub(int a, char *pbuf)

{

int amari = 0;
int i;

for (i = 0; i <= 32; i++)
{

if (a < 1)
{
pbuf = '0';
}

else
{

amari = a % 2;
a = a / 2;

}

if (amari == 1)
{

pbuf = '1';

}

else
{

pbuf = '0';

}

}
}

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

Re: 2進数表示

#2

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

コードを提示するときはBBcodeを有効にした状態でcodeタグで囲み、
かつ適切なインデントをしていただけると、見やすくて助かります。
111 さんが書きました:例えば5を入力した場合、 00000000 00000000 00000000 00000101のような出力にしたいのですが、
どのようにすればいいでしょうか?
素直に出力すればいいと思います。

コード:

#include <stdio.h>

int main(void)

{
	int c = 0;
	int d = 0;

	scanf("%d", &c);

	for (d = 31; d >= 0; d--)

	{
		putchar((c >> d) & 1 ? '1' : '0');
		if (d > 0 && d % 8 == 0) putchar(' ');
	}

	putchar('\n');

	return 0;

}
111 さんが書きました:入力された変数を左に順1bitシフトして、その内容を表示
1bitずつシフトしないといけないという縛りがあるなら、こうでしょうか?
【訂正】すいません、左シフトでしたね。

コード:

#include <stdio.h>

int main(void)

{
	int c = 0;
	int d = 0;

	scanf("%d", &c);

	for (d = 0; d < 32; d++)

	{
		if (d > 0 && d % 8 == 0) putchar(' ');
		putchar(c < 0 ? '1' : '0');
		c <<= 1;
	}

	putchar('\n');

	return 0;

}
↓間違えたソースコード
► スポイラーを表示
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

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