2進数表示
Posted: 2014年10月09日(木) 08:17
入力された変数を左に順1bitシフトして、その内容を表示
但し、printf文で2進数表示はできないので、変数を'0'と'1'の文字列に変換するサブルーチンとして関数を使う。
サブルーチンは以下の形式で行います。
void sub(a,pbuf)
int a;
char *pbuf;
下記のプログラムコードで作っていますが、思ったような出力になりません
例えば5を入力した場合、
00000000 00000000 00000000 00000101
00000000 00000000 00000000 00001010
00000000 00000000 00000000 00010100
のような出力にしたいのですが、
どのようにすればいいでしょうか?
#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[i] = '0';
}
else
{
amari = a % 2;
a = a / 2;
}
if (amari == 1)
{
pbuf[i] = '1';
}
else
{
pbuf[i] = '0';
}
}
}
但し、printf文で2進数表示はできないので、変数を'0'と'1'の文字列に変換するサブルーチンとして関数を使う。
サブルーチンは以下の形式で行います。
void sub(a,pbuf)
int a;
char *pbuf;
下記のプログラムコードで作っていますが、思ったような出力になりません
例えば5を入力した場合、
00000000 00000000 00000000 00000101
00000000 00000000 00000000 00001010
00000000 00000000 00000000 00010100
のような出力にしたいのですが、
どのようにすればいいでしょうか?
#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[i] = '0';
}
else
{
amari = a % 2;
a = a / 2;
}
if (amari == 1)
{
pbuf[i] = '1';
}
else
{
pbuf[i] = '0';
}
}
}